مشاور صف توزیع ساده طراحی شده برای دست زدن به تعداد زیادی از وظایف یک خاموش است.
ما این را در Disqus یا Disqus ساخته شده است که مسئولیت رسیدگی به مکرر، اما وظایف غیر معمول مانند "مهاجرت این اطلاعات را به یک طرح جدید".
چرا؟
شما ممکن است بپرسید، "چرا کرفس استفاده کنید؟". خوب جواب این است که به سادگی صف نرمال نیاز (نه به معنای واقعی کلمه، اما می شود دردناک بدون) شما به بافر همه وظایف را به یک محل مرکزی. این مشکل می شود زمانی که شما یک مقدار زیادی از وظایف، به ویژه هنگامی که آنها حاوی مقدار زیادی از داده ها.
تصور کنید که شما باید 1 میلیارد وظایف، هر وزن در 5K. بدین، غیر فشرده، در حداقل 4 ترابایت فضای ذخیره سازی مورد نیاز فقط به نگه داشتن که در اطراف، و دستاوردهای شما بسیار کم است.
مشاور از سوی دیگر طراحی شده است را به یک تکرارکننده resumable، و تنها در حداکثر تعداد مشاغل جلو و در یک زمان (با استفاده از استاندارد پایتون صف را). این یک الگوی حافظه سازگار است که می تواند به صورت خطی در مقیاس تضمین.
استفاده
ایجاد یک تکرار، و پاسخ به تماس:
سوکت واردات
# ما باید به طور پیش فرض ایست ** تنظیم نشده است اطمینان ** و یا گه تصادفی خواهد فن ضربه.
socket.setdefaulttimeout (هیچ)
# مشاور / example.py
get_jobs دف (آخرین = 0):
و nbsp؛ # گذشته خواهد بود فرستاده اگر دولت از سر گرفته شد
و nbsp؛ # از اجرای قبلی
& nbsp؛ برای من در xrange (گذشته، 100000000):
و nbsp؛ # شغل را به همراه داشت، باید serializeable با ترشی شود
& nbsp؛ از من عملکرد
دف handle_job (من):
و nbsp؛ # این ** باید ** idempotent است می شود، به عنوان سرگیری روند ممکن است یک کار اجرا
و nbsp؛ # که در حال حاضر اجرا شده است
و nbsp؛ چاپ "کردم٪ R!" ٪ من
تخم ریزی کارشناسی ارشد:
را لمس کنید و. TM-MASTER taskmaster.example
تخم ریزی برده:
را لمس کنید و. taskmaster.example TM-برده
و یا تخم ریزی 8 بردگان (هر threadpool):
& nbsp؛ در taskmaster.example TM-تخم ریزی 8
نمی خواهم تابع جادویی کشف برای Master / Slave است؟ مشخص اهداف خود:
را لمس کنید و. TM-MASTER taskmaster.example: get_jobs $ taskmaster.example TM-برده: handle_job
توجه: همه استدلال اختیاری هستند، و به طور پیش فرض خواهد به localhost را با هیچ کلیدی تایید
مورد نیاز:
پایتون
نظر یافت نشد