Celery: RunTimeError: получить в закрытом пуле, попытаться использовать контрольный осмотр

Созданный на 28 нояб. 2017  ·  3Комментарии  ·  Источник: celery/celery

Контрольный список

  • [x] Я включил в этот выпуск вывод celery -A proj report .
    (если у вас нет такой возможности, то хотя бы укажите Celery
    версия затронута).

программное обеспечение -> сельдерей: 4.0.2 (скрытый вызов) комбу: 4.1.0 py: 2.7.13 или (py: 2.7.12)
бильярд: 3.5.0.3 redis: 2.10.5
платформа -> система: Darwin arch: 64bit imp: CPython. (хотя обычно: система: Linux arch: 64bit, ELF)
загрузчик -> celery.loaders.app.AppLoader
настройки -> транспорт: результаты redis : localhost: 6380 /

BROKER_TRANSPORT_OPTIONS: {
fanout_patterns: True, fanout_prefix: True}
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: ['приложение / json']
TIME_ZONE: "UTC"
CELERY_MESSAGE_COMPRESSION: 'gzip'
CELERY_TASK_ALWAYS_EAGER: неверно
CELERY_RESULT_BACKEND: u ' redis: // localhost : 6380 /'

  • [x] Я подтвердил, что проблема существует с ветвью master Celery.

Также встречается на сельдерее 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

пожалуйста, отправьте PR, если у вас есть какое-либо предлагаемое решение. не уверен, что это исправлено в мастере, поэтому вы также можете попробовать основные последние изменения

пинг, если он все еще существует в 4.4+

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

girishbin picture girishbin  ·  45Комментарии

mvaled picture mvaled  ·  50Комментарии

jenstroeger picture jenstroeger  ·  43Комментарии

georgepsarakis picture georgepsarakis  ·  84Комментарии

ashchristopher picture ashchristopher  ·  43Комментарии