celery -A proj report
في الإصدار.البرنامج -> الكرفس: 4.0.2 (latentcall) kombu: 4.1.0 py: 2.7.13 أو (py: 2.7.12)
البلياردو: 3.5.0.3 redis: 2.10.5
النظام الأساسي -> النظام: قوس داروين: 64 بت عفريت: CPython. (على الرغم من أنه عادة: النظام: Linux arch: 64bit ، ELF)
محمل -> celery.loaders.app.AppLoader
الإعدادات -> النقل: نتائج redis : localhost: 6380 /
BROKER_TRANSPORT_OPTIONS: {
"fanout_patterns": صحيح ، "fanout_prefix": صحيح}
CELERY_TASK_COMPRESSION: "gzip"
CELERY_TIMEZONE: "UTC"
CELERY_RESULT_SERIALIZER: "json"
CELERY_BROKER_URL: u ' redis: // localhost : 6380 //'
CELERY_TASK_SERIALIZER: "json"
CELERY_RESULT_EXPIRES: 60
CELERY_ACCEPT_CONTENT: ['application / json']
TIME_ZONE: "التوقيت العالمي المنسق"
CELERY_MESSAGE_COMPRESSION: "gzip"
CELERY_TASK_ALWAYS_EAGER: خطأ
CELERY_RESULT_BACKEND: u ' redis: // localhost : 6380 /'
master
.يوجد أيضًا على الكرفس 4.1.0.
حاول استخدام الوحدة النمطية control
. في حالتي ، أحصل على active_queues()
.
أتوقع أنه طالما كان النظام في حالة جيدة ، يجب أن أتمكن من الحصول على المعلومات من داخل الوحدة النمطية control
. لا أفهم بالضبط سبب إغلاق المسبح في بعض الأحيان وفي أحيان أخرى لا يكون مغلقًا.
قد تكون هذه هي نفس المشكلة كما في # 1839
سيحتوي الرمز على خطأ في وقت التشغيل ، لذلك لا يمكنني الاستعلام عن البيانات التي أحتاجها من الكرفس.
File "/.../tasks.py", line 80, in workers_on_queue
for k, v in six.viewitems(celery_app.control.inspect().active_queues()):
File "/.../lib/python2.7/site-packages/celery/app/control.py", line 116, in active_queues
return self._request('active_queues')
File "/.../lib/python2.7/site-packages/celery/app/control.py", line 81, in _request
timeout=self.timeout, reply=True,
File "/.../lib/python2.7/site-packages/celery/app/control.py", line 436, in broadcast
limit, callback, channel=channel,
File "/.../lib/python2.7/site-packages/kombu/pidbox.py", line 315, in _broadcast
serializer=serializer)
File "/.../lib/python2.7/site-packages/kombu/pidbox.py", line 285, in _publish
with self.producer_or_acquire(producer, chan) as producer:
File "/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py", line 17, in __enter__
return self.gen.next()
File "/.../lib/python2.7/site-packages/kombu/pidbox.py", line 247, in producer_or_acquire
with self.producer_pool.acquire() as producer:
File "/.../lib/python2.7/site-packages/kombu/resource.py", line 74, in acquire
raise RuntimeError('Acquire on closed pool')
يحدث هذا فقط عندما نستخدم الوحدة النمطية control
. في بعض الأحيان يعمل بشكل جيد.
كان مسار الكود هذا في حلقة إعادة المحاولة ، لذلك في النهاية ما زال يفشل في التنفيذ.
لقد رأيت هذا في كل مكان بعد الترقية إلى الكرفس 4 من 3.1 ، إلى حد كبير في أي مكان أحتاج فيه إلى الاتصال بوحدة التحكم في تطبيق الكرفس ، وهذا مطلوب:
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05
الرجاء إرسال العلاقات العامة إذا كان لديك أي حل مقترح. لست متأكدًا مما إذا كان قد تم إصلاحه بشكل رئيسي ، لذلك يمكنك أيضًا محاولة إتقان أحدث التغييرات
ping إذا كان لا يزال موجودًا في 4.4+
التعليق الأكثر فائدة
لقد رأيت هذا في كل مكان بعد الترقية إلى الكرفس 4 من 3.1 ، إلى حد كبير في أي مكان أحتاج فيه إلى الاتصال بوحدة التحكم في تطبيق الكرفس ، وهذا مطلوب:
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05