Celery: RunTimeError: Adquira em pool fechado, tente usar a inspeção de controle

Criado em 28 nov. 2017  ·  3Comentários  ·  Fonte: celery/celery

Lista de controle

  • [x] Incluí a saída de celery -A proj report na edição.
    (se você não for capaz de fazer isso, pelo menos especifique o aipo
    versão afetada).

software -> aipo: 4.0.2 (latentcall) kombu: 4.1.0 py: 2.7.13 ou (py: 2.7.12)
bilhar: 3.5.0.3 redis: 2.10.5
plataforma -> sistema: Darwin arch: 64 bits imp: CPython. (embora geralmente: sistema: Linux arch: 64 bits, ELF)
loader -> celery.loaders.app.AppLoader
settings -> transport: redis results: 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: ['application / json']
TIME_ZONE: 'UTC'
CELERY_MESSAGE_COMPRESSION: 'gzip'
CELERY_TASK_ALWAYS_EAGER: Falso
CELERY_RESULT_BACKEND: u ' redis: // localhost : 6380 /'

  • [x] Eu verifiquei que o problema existe no ramo master do aipo.

Também ocorre no aipo 4.1.0.

Passos para reproduzir

Tente usar o módulo control . No meu caso, estou recebendo active_queues() .

Comportamento esperado

Espero que, desde que o sistema esteja em bom estado, eu consiga obter as informações de dentro do módulo control . Não entendo exatamente porque às vezes a piscina está fechada e outras vezes não.

Comportamento real

Este pode ser o mesmo problema que em # 1839

O código terá um erro de tempo de execução, portanto, não posso consultar os dados de que preciso do aipo.

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')

Isso só acontece quando estamos usando o módulo control . Às vezes funciona bem.

Esse caminho de código estava até mesmo em um loop de repetição, portanto, no final, ele ainda falhou ao executar.

Feedback Needed ✘

Comentários muito úteis

Tenho visto isso em todo lugar depois de atualizar para o aipo 4 do 3.1, praticamente em qualquer lugar que eu precise chamar no controlador do aplicativo de aipo, isso é necessário:

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

Todos 3 comentários

Tenho visto isso em todo lugar depois de atualizar para o aipo 4 do 3.1, praticamente em qualquer lugar que eu precise chamar no controlador do aplicativo de aipo, isso é necessário:

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

por favor envie um pr se você tiver alguma solução proposta. não tenho certeza se está corrigido no master, então você também pode tentar as últimas alterações do master

ping se ainda existir no 4.4+

Esta página foi útil?
0 / 5 - 0 avaliações