وصاحب العمل هو طابور توزيع بسيط المصممة للتعامل مع أعداد كبيرة من المهام لمرة واحدة.
بنينا هذا في هارد للتعامل مع متكررة، ولكن المهام شائعة مثل "تهاجر هذه البيانات إلى مخطط جديد".
لماذا؟
قد تسأل، "لماذا لا تستخدم الكرفس؟". حسنا الجواب هو ببساطة أن الطابور العادي يتطلب (ليس حرفيا، لكنها تريد ان تكون مؤلمة بدون) لك العازلة جميع المهام في موقع مركزي. هذا يصبح مشكلة عندما يكون لديك كمية كبيرة من المهام، وخاصة عندما تحتوي على كمية كبيرة من البيانات.
تخيل لديك 1000000000 المهام، كل في وزنها على 5K. الذي يكون، غير مضغوط، في الحد الأدنى من 4 تيرابايت من التخزين المطلوبة فقط للحفاظ على هذا حولها، ويكسب لك القليل جدا.
تم تصميم المناظر من ناحية أخرى لاتخاذ مكرر تكملة، وسحب فقط في أكبر عدد ممكن من فرص العمل في كل مرة (باستخدام معيار بيثون قائمة الانتظار). وهذا يضمن وجود نمط ثابت الذاكرة التي يمكن توسيع نطاق خطيا.
استعمال
إنشاء مكرر، والاستدعاء:
مقبس استيراد
# يجب علينا أن نضمن المهلة الافتراضية ** لم يتم تعيين ** أو سوف القرف عشوائي أصاب المروحة.
socket.setdefaulttimeout (لا يوجد)
# المسخر / example.py
get_jobs مواطنه (الماضي = 0):
على & nbsp؛ # آخر سترسل إذا استؤنفت الدولة
على & nbsp؛ # من تشغيل السابق
على & nbsp؛ لأنني في xrange (الماضي، 100000000):
على & nbsp؛ # وظائف أسفرت يجب أن يكون serializeable مع المخلل
على & nbsp؛ ط العائد
handle_job مواطنه (ط):
على & nbsp؛ # هذا ** ** يجب أن idempotent، واستئناف العملية قد تنفذ على وظيفة
على & nbsp؛ # سبق أن تشغيل
على & nbsp؛ طباعة "حصلت على٪ R!" ٪ أنا
تفرخ الماجستير:
على & nbsp؛ taskmaster.example TM-الماجستير
تفرخ الرقيق:
على & nbsp؛ taskmaster.example TM-الرقيق
أو تفرخ 8 العبيد (تحتوي كل منها على threadpool):
على & nbsp؛ TM-تفرخ taskmaster.example 8
لا أميل مثل وظيفة سحرية لاكتشاف السيد / العبد؟ تحديد الأهداف الخاصة بك:
على & nbsp؛ taskmaster.example TM-الماجستير: get_jobs $ TM-الرقيق taskmaster.example: handle_job
ملاحظة: جميع الحجج اختيارية، وسوف الافتراضي إلى LOCALHOST مع أي مفتاح المصادقة
المتطلبات:
بيثون
لم يتم العثور على التعليقات