Celery: RunTimeError: μ œμ–΄ 검사λ₯Ό μ‚¬μš©ν•˜λ €κ³  λ‹«νžŒ ν’€μ—μ„œ νšλ“

에 λ§Œλ“  2017λ…„ 11μ›” 28일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: celery/celery

체크리슀트

  • [x] λ¬Έμ œμ— celery -A proj report 의 좜λ ₯을 ν¬ν•¨ν–ˆμŠ΅λ‹ˆλ‹€.
    (이 μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μ—†λŠ” 경우 μ΅œμ†Œν•œ Celeryλ₯Ό μ§€μ •ν•˜μ‹­μ‹œμ˜€.
    영ν–₯을 λ°›λŠ” 버전).

μ†Œν”„νŠΈμ›¨μ–΄ -> celery:4.0.2 (latentcall) kombu:4.1.0 py:2.7.13 λ˜λŠ” (py:2.7.12)
당ꡬ:3.5.0.3 redis:2.10.5
ν”Œλž«νΌ -> μ‹œμŠ€ν…œ:λ‹€μœˆ μ•„μΉ˜:64λΉ„νŠΈ μž„ν”„:CPython . (보톡: system:Linux arch:64bit, ELF)
λ‘œλ” -> celery.loaders.app.AppLoader
μ„€μ • -> 전솑: redis κ²°κ³Ό: 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: ['μ• ν”Œλ¦¬μΌ€μ΄μ…˜/json']
TIME_ZONE: 'UTC'
CELERY_MESSAGE_COMPRESSION: 'gzip'
CELERY_TASK_ALWAYS_EAGER: 거짓
CELERY_RESULT_BACKEND: u' redis://localhost :6380/'

  • [x] Celery의 master 뢄기에 λ¬Έμ œκ°€ μžˆμŒμ„ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

μ…€λŸ¬λ¦¬ 4.1.0μ—μ„œλ„ λ°œμƒν•©λ‹ˆλ‹€.

μž¬ν˜„ 단계

control λͺ¨λ“ˆμ„ μ‚¬μš©ν•΄ λ³΄μ‹­μ‹œμ˜€. 제 κ²½μš°μ—λŠ” active_queues() λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” 행동

μ‹œμŠ€ν…œμ΄ μ–‘ν˜Έν•œ μƒνƒœμ— μžˆλŠ” ν•œ control λͺ¨λ“ˆ λ‚΄μ—μ„œ 정보λ₯Ό 얻을 수 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. 수영μž₯이 λ‹«νž λ•Œλ„ 있고 닫지 μ•Šμ„ λ•Œλ„ μžˆλŠ” 이유λ₯Ό μ •ν™•νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

μ‹€μ œ 행동

이것은 #1839μ—μ„œμ™€ 같은 문제일 수 μžˆμŠ΅λ‹ˆλ‹€.

μ½”λ“œμ— λŸ°νƒ€μž„ 였λ₯˜κ°€ λ°œμƒν•˜λ―€λ‘œ μ…€λŸ¬λ¦¬μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό 쿼리할 수 μ—†μŠ΅λ‹ˆλ‹€.

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

이것은 control λͺ¨λ“ˆμ„ μ‚¬μš©ν•  λ•Œλ§Œ λ°œμƒν•©λ‹ˆλ‹€. λ•Œλ‘œλŠ” μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

이 μ½”λ“œ κ²½λ‘œλŠ” μž¬μ‹œλ„ 루프에도 μžˆμœΌλ―€λ‘œ κ²°κ΅­ 싀행에 μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

Feedback Needed ✘

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 거의 μ–΄λ””μ„œλ‚˜ 내가이 ν•„μš”ν•œ μ…€λŸ¬λ¦¬ μ‘μš© ν”„λ‘œκ·Έλž¨ 컨트둀러λ₯Ό 호좜 ν•  ν•„μš”, 3.1 μ…€λŸ¬λ¦¬ 4둜 μ—…κ·Έλ ˆμ΄λ“œ ν•œ ν›„ 사방이λ₯Ό λ³΄κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€ :

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

λͺ¨λ“  3 λŒ“κΈ€

λ‚˜λŠ” 거의 μ–΄λ””μ„œλ‚˜ 내가이 ν•„μš”ν•œ μ…€λŸ¬λ¦¬ μ‘μš© ν”„λ‘œκ·Έλž¨ 컨트둀러λ₯Ό 호좜 ν•  ν•„μš”, 3.1 μ…€λŸ¬λ¦¬ 4둜 μ—…κ·Έλ ˆμ΄λ“œ ν•œ ν›„ 사방이λ₯Ό λ³΄κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€ :

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

μ œμ•ˆλœ μ†”λ£¨μ…˜μ΄ 있으면 홍보λ₯Ό λ³΄λ‚΄μ£Όμ‹­μ‹œμ˜€. λ§ˆμŠ€ν„°μ—μ„œ μˆ˜μ •λ˜μ—ˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ λ§ˆμŠ€ν„° μ΅œμ‹  λ³€κ²½ 사항을 μ‹œλ„ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

4.4+에 μ—¬μ „νžˆ μ‘΄μž¬ν•˜λŠ” 경우 ping

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰