celery -A proj report
dalam masalah ini.perangkat lunak -> seledri:4.0.2 (panggilan laten) kombu:4.1.0 py:2.7.13 atau (py:2.7.12)
biliar:3.5.0.3 redis:2.10.5
platform -> system:Darwin arch:64bit imp:CPython . (walaupun biasanya: system:Linux arch:64bit, ELF)
loader -> seledri.loaders.app.AppLoader
pengaturan -> transport:redis hasil:redis :// localhost:6380/
BROKER_TRANSPORT_OPTIONS: {
'fanout_patterns': Benar, 'fanout_prefix': Benar}
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: ['aplikasi/json']
TIME_ZONE: 'UTC'
CELERY_MESSAGE_COMPRESSION: 'gzip'
CELERY_TASK_ALWAYS_EAGER: Salah
CELERY_RESULT_BACKEND: Anda redis://localhost :6380/'
master
cabang Seledri.Juga terjadi pada seledri 4.1.0.
Coba gunakan modul control
. Dalam kasus saya, saya mendapatkan active_queues()
.
Saya berharap selama sistem dalam keadaan baik, saya harus bisa mendapatkan info dari dalam modul control
. Saya tidak mengerti persis mengapa kadang-kadang kolam ditutup dan di lain waktu tidak.
Ini mungkin masalah yang sama seperti pada #1839
Kode akan memiliki kesalahan runtime, jadi saya tidak dapat meminta data yang saya butuhkan dari seledri.
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')
Ini hanya terjadi ketika kita menggunakan modul control
. Terkadang berfungsi dengan baik.
Jalur kode ini bahkan dalam retry-loop, sehingga pada akhirnya masih gagal dijalankan.
Saya telah melihat ini di semua tempat setelah memutakhirkan ke seledri 4 dari 3.1, hampir di mana saja saya perlu memanggil pengontrol aplikasi seledri ini diperlukan:
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05
plz kirim pr jika Anda memiliki solusi yang diusulkan. tidak yakin apakah sudah diperbaiki di master, jadi Anda juga bisa mencoba menguasai perubahan terbaru
ping jika masih ada di 4.4+
Komentar yang paling membantu
Saya telah melihat ini di semua tempat setelah memutakhirkan ke seledri 4 dari 3.1, hampir di mana saja saya perlu memanggil pengontrol aplikasi seledri ini diperlukan:
https://github.com/ansible/awx/commit/9ee77a95c6686b266f3ab7105c8d5be7766e6f05