Celery: RunTimeError: الحصول على بركة مغلقة حاول استخدام فحص التحكم

تم إنشاؤها على ٢٨ نوفمبر ٢٠١٧  ·  3تعليقات  ·  مصدر: celery/celery

قائمة تدقيق

  • [x] لقد قمت بتضمين ناتج 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 /'

  • [x] لقد تحققت من وجود المشكلة في فرع الكرفس 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 . في بعض الأحيان يعمل بشكل جيد.

كان مسار الكود هذا في حلقة إعادة المحاولة ، لذلك في النهاية ما زال يفشل في التنفيذ.

Feedback Needed ✘

التعليق الأكثر فائدة

لقد رأيت هذا في كل مكان بعد الترقية إلى الكرفس 4 من 3.1 ، إلى حد كبير في أي مكان أحتاج فيه إلى الاتصال بوحدة التحكم في تطبيق الكرفس ، وهذا مطلوب:

https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05

ال 3 كومينتر

لقد رأيت هذا في كل مكان بعد الترقية إلى الكرفس 4 من 3.1 ، إلى حد كبير في أي مكان أحتاج فيه إلى الاتصال بوحدة التحكم في تطبيق الكرفس ، وهذا مطلوب:

https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05

الرجاء إرسال العلاقات العامة إذا كان لديك أي حل مقترح. لست متأكدًا مما إذا كان قد تم إصلاحه بشكل رئيسي ، لذلك يمكنك أيضًا محاولة إتقان أحدث التغييرات

ping إذا كان لا يزال موجودًا في 4.4+

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

mvaled picture mvaled  ·  50تعليقات

axsapronov picture axsapronov  ·  48تعليقات

charles-dyfis-net picture charles-dyfis-net  ·  48تعليقات

georgepsarakis picture georgepsarakis  ·  84تعليقات

marvelph picture marvelph  ·  129تعليقات