Celery: RunTimeError: Akuisisi pada kumpulan tertutup coba gunakan kontrol inspeksi

Dibuat pada 28 Nov 2017  ·  3Komentar  ·  Sumber: celery/celery

Daftar periksa

  • [x] Saya telah menyertakan output celery -A proj report dalam masalah ini.
    (jika Anda tidak dapat melakukan ini, maka setidaknya tentukan Seledri
    versi terpengaruh).

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

  • [x] Saya telah memverifikasi bahwa ada masalah pada master cabang Seledri.

Juga terjadi pada seledri 4.1.0.

Langkah-langkah untuk mereproduksi

Coba gunakan modul control . Dalam kasus saya, saya mendapatkan active_queues() .

Perilaku yang diharapkan

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.

Perilaku sebenarnya

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.

Feedback Needed ✘

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

Semua 3 komentar

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+

Apakah halaman ini membantu?
0 / 5 - 0 peringkat