Celery: RunTimeError: Adquirir en un grupo cerrado, intente usar el control inspeccionar

Creado en 28 nov. 2017  ·  3Comentarios  ·  Fuente: celery/celery

Lista de Verificación

  • [x] He incluido el resultado de celery -A proj report en la edición.
    (si no puede hacer esto, al menos especifique el Apio
    versión afectada).

software -> apio: 4.0.2 (llamada latente) kombu: 4.1.0 py: 2.7.13 o (py: 2.7.12)
billar: 3.5.0.3 redis: 2.10.5
plataforma -> sistema: Darwin arch: 64bit imp: CPython. (aunque normalmente: sistema: Linux arch: 64bit, ELF)
cargador -> celery.loaders.app.AppLoader
configuración -> transporte: redis resultados: redis : // localhost: 6380 /

BROKER_TRANSPORT_OPTIONS: {
'fanout_patterns': Verdadero, 'fanout_prefix': Verdadero}
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] He verificado que el problema existe en la sucursal master de Apio.

También ocurre en el apio 4.1.0.

pasos para reproducir

Intente usar el módulo control . En mi caso, obtengo el active_queues() .

Comportamiento esperado

Espero que mientras el sistema esté en buen estado, debería poder obtener la información desde el módulo control . No entiendo exactamente por qué a veces la piscina está cerrada y otras veces no.

Comportamiento real

Este podría ser el mismo problema que en el n. ° 1839

El código tendrá un error de tiempo de ejecución, por lo que no puedo consultar los datos que necesito de apio.

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

Esto solo sucede cuando usamos el módulo control . A veces funciona bien.

Esta ruta de código estaba incluso en un bucle de reintento, por lo que al final aún no se pudo ejecutar.

Feedback Needed ✘

Comentario más útil

He estado viendo esto por todas partes después de actualizar a celery 4 desde 3.1, prácticamente en cualquier lugar donde necesite llamar al controlador de la aplicación de apio, esto es necesario:

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

Todos 3 comentarios

He estado viendo esto por todas partes después de actualizar a celery 4 desde 3.1, prácticamente en cualquier lugar donde necesite llamar al controlador de la aplicación de apio, esto es necesario:

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

por favor envíe un pr si tiene alguna solución propuesta. No estoy seguro de si está arreglado en el maestro, por lo que también puede probar los últimos cambios del maestro.

ping si todavía existe en 4.4+

¿Fue útil esta página
0 / 5 - 0 calificaciones