الإصدار المتأثر: الأحدث (4.1.1)
يتجاهل العمال المشغولون مسبقًا إشارة sigterm - العملية الأبوية الوحيدة المسؤولة عن الإغلاق الدافئ تتفاعل معها وتغلق العمليات الفرعية برشاقة.
عندما تحصل عمليات العمال مسبقة التشغيل على نموذج ، يتم إغلاقها على الفور (على سبيل المثال kill <pid>
):
celery_1 | [2018-06-04 09:19:57,376: ERROR/MainProcess] Process 'ForkPoolWorker-2' pid:26 exited with 'signal 15 (SIGTERM)'
عندما يصل sigterm إلى عملية العامل الأصل ، يتم إجراء إيقاف التشغيل دافئًا. إذا حصل العمال المشغولون مسبقًا في هذه الأثناء على إشارة مصطلح ، فسيتم إنهاء المهام.
لا يمكنني العثور على طريقة للقيام بإغلاق مناسب للكرفس في حاوية عامل إرساء بنظام init.
(راجع القائمة البريدية: https://groups.google.com/forum/#!topic/celery-users/9UF_VyzRt8Q). يبدو أنني يجب أن أتأكد من أن مصطلح الإشارة يصل فقط إلى العملية الأم ، ولكن ليس أيًا من العمال الذين تم عملهم مسبقًا. يبدو أن هذا صعب للغاية عند تشغيل نص برمجي يحتوي على العديد من حالات الكرفس (على سبيل المثال ، إيقاع وقائمتان)
هل من الممكن إضافة ميزة تسمح لعمليات العمال الجاهزة بتجاهل النموذج؟
من أجل الحصول على انتشار مناسب للإشارة عند بدء عمليات متعددة داخل حاوية Docker ، ربما تحتاج إلى مدير عملية مثل المشرف .
لمزيد من المعلومات ، إليك نظرة عامة حول كيفية قيام عامل التحميل بإيقاف الأشياء: https://www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/#docker -stop
أيضًا ، إذا كنت تستخدم عامل الإرساء بالفعل ، فإنني أوصي بطرد عامل واحد لكل حاوية.
من الأسهل إدارتها ولا تحتوي الحاويات على الكثير من النفقات العامة. من الأسهل أيضًا إجراء القياس التلقائي عند استخدام أدوات مثل k8s.
شيء أخير. إذا كنت تريد حقًا تشغيل برنامج bash الخاص بك لإدارة العديد من العمال ، فسيتعين عليك إقالة كل عامل ثم النوم إلى أجل غير مسمى حتى يأتي SIGTERM .
عندما يحدث ذلك ، يمكنك الذهاب والحصول على PID للعمال ثم إيقاف كل واحد برشاقة.
وهو ما يفعله المشرف كما أشار georgepsarakis .
شكرًا georgepsarakis و xirdneh على اقتراحاتكم المفيدة. تمكنت من الحصول على إعداد عمل مع مشرف! 🎉
وجود عامل واحد لكل حاوية هو اقتراح جيد جدًا أيضًا! شكرا جزيلا!
التعليق الأكثر فائدة
شكرًا georgepsarakis و xirdneh على اقتراحاتكم المفيدة. تمكنت من الحصول على إعداد عمل مع مشرف! 🎉
وجود عامل واحد لكل حاوية هو اقتراح جيد جدًا أيضًا! شكرا جزيلا!