celery -A proj report
in die Ausgabe aufgenommen.software -> sellerie:4.0.2 (latentcall) kombu:4.1.0 py:2.7.13 oder (py:2.7.12)
Billard: 3.5.0.3 redis: 2.10.5
Plattform -> system:Darwin arch:64bit imp:CPython . (allerdings normalerweise: system:Linux arch:64bit, ELF)
loader -> celery.loaders.app.AppLoader
Einstellungen -> Transport: Redis Ergebnisse: 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: Falsch
CELERY_RESULT_BACKEND: u' redis://localhost :6380/'
master
Zweig von Celery besteht.Kommt auch bei Sellerie vor 4.1.0.
Versuchen Sie, das Modul control
. In meinem Fall bekomme ich active_queues()
.
Ich gehe davon aus, dass ich die Informationen aus dem Modul control
abrufen kann, solange sich das System in einem guten Zustand befindet. Ich verstehe nicht genau, warum der Pool manchmal geschlossen ist und manchmal nicht.
Dies könnte das gleiche Problem sein wie in #1839
Der Code weist einen Laufzeitfehler auf, sodass ich die benötigten Daten von Sellerie nicht abfragen kann.
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')
Dies geschieht nur, wenn wir das Modul control
. Manchmal funktioniert es gut.
Dieser Codepfad befand sich sogar in einer Wiederholungsschleife, sodass er am Ende immer noch nicht ausgeführt wurde.
Ich habe dies überall gesehen, nachdem ich von 3.1 auf Sellerie 4 aktualisiert habe, so ziemlich überall, wo ich den Sellerie-App-Controller aufrufen muss.
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05
Bitte senden Sie eine pr, wenn Sie eine vorgeschlagene Lösung haben. Ich bin mir nicht sicher, ob es in Master behoben ist, also können Sie auch die neuesten Änderungen von Master ausprobieren
ping, wenn es noch in 4.4+ vorhanden ist
Hilfreichster Kommentar
Ich habe dies überall gesehen, nachdem ich von 3.1 auf Sellerie 4 aktualisiert habe, so ziemlich überall, wo ich den Sellerie-App-Controller aufrufen muss.
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05