Celery: TypeErrorで最初のタスクの埌にCeleryWorkerがクラッシュする'NoneType'オブゞェクトは呌び出せたせん

䜜成日 2016幎11月24日  Â·  54コメント  Â·  ゜ヌス: celery/celery

チェックリスト

  • [X] celery -A proj reportの出力を問題に含めたした。
    これができない堎合は、少なくずもセロリを指定しおください
    圱響を受けるバヌゞョン。
software -> celery:4.0.0 (latentcall) kombu:4.0.0 py:3.4.3
            billiard:3.5.0.2 py-amqp:2.1.1
platform -> system:Linux arch:64bit, ELF imp:CPython
loader   -> celery.loaders.default.Loader
settings -> transport:amqp results:disabled
  • [X]この問題がCeleryのmasterブランチに察しお存圚するこずを確認したした。
    はい、テストしたしたが、マスタヌを䜿甚しおも同じように動䜜したす。

再珟する手順

同じ仕様ず芁件を持぀他のマシンが動䜜しおいるため、正確にはわかりたせん。

予想される行動

タスクを消費する必芁がありたす。

実際の動䜜

タスクが受け入れられ、トレヌスバックがログに蚘録され、䜕らかの理由でワヌカヌがブロヌカヌに再接続したす。 これは氞遠に繰り返されたす

[2016-11-23 23:09:00,468: INFO/MainProcess] Connected to amqp://user:**@10.136.131.6:5672//
[2016-11-23 23:09:00,484: INFO/MainProcess] mingle: searching for neighbors
[2016-11-23 23:09:01,921: INFO/MainProcess] mingle: sync with 1 nodes
[2016-11-23 23:09:01,922: INFO/MainProcess] mingle: sync complete
[2016-11-23 23:09:01,970: INFO/MainProcess] Received task: tasks.calculate_user_running_total[ddd103af-d527-4564-83f8-96b747767a0c]
[2016-11-23 23:09:01,972: CRITICAL/MainProcess] Unrecoverable error: TypeError("'NoneType' object is not callable",)
Traceback (most recent call last):
  File "./venv/lib/python3.4/site-packages/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "./venv/lib/python3.4/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "./venv/lib/python3.4/site-packages/celery/bootsteps.py", line 370, in start
    return self.obj.start()
  File "./venv/lib/python3.4/site-packages/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "./venv/lib/python3.4/site-packages/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "./venv/lib/python3.4/site-packages/celery/worker/consumer/consumer.py", line 584, in start
    c.loop(*c.loop_args())
  File "./venv/lib/python3.4/site-packages/celery/worker/loops.py", line 47, in asynloop
    consumer.consume()
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 470, in consume
    self._basic_consume(T, no_ack=no_ack, nowait=False)
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 591, in _basic_consume
    no_ack=no_ack, nowait=nowait)
  File "./venv/lib/python3.4/site-packages/kombu/entity.py", line 737, in consume
    arguments=self.consumer_arguments)
  File "./venv/lib/python3.4/site-packages/amqp/channel.py", line 1578, in basic_consume
    wait=None if nowait else spec.Basic.ConsumeOk,
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 73, in send_method
    return self.wait(wait, returns_tuple=returns_tuple)
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 93, in wait
    self.connection.drain_events(timeout=timeout)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 464, in drain_events
    return self.blocking_read(timeout)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 469, in blocking_read
    return self.on_inbound_frame(frame)
  File "./venv/lib/python3.4/site-packages/amqp/method_framing.py", line 88, in on_frame
    callback(channel, msg.frame_method, msg.frame_args, msg)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 473, in on_inbound_method
    method_sig, payload, content,
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 142, in dispatch_method
    listener(*args)
  File "./venv/lib/python3.4/site-packages/amqp/channel.py", line 1613, in _on_basic_deliver
    fun(msg)
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 617, in _receive_callback
    return on_m(message) if on_m else self.receive(decoded, message)
  File "./venv/lib/python3.4/site-packages/celery/worker/consumer/consumer.py", line 558, in on_task_received
    callbacks,
  File "./venv/lib/python3.4/site-packages/celery/worker/strategy.py", line 145, in task_message_handler
    handle(req)
  File "./venv/lib/python3.4/site-packages/celery/worker/worker.py", line 221, in _process_task_sem
    return self._quick_acquire(self._process_task, req)
  File "./venv/lib/python3.4/site-packages/kombu/async/semaphore.py", line 62, in acquire
    callback(*partial_args, **partial_kwargs)
  File "./venv/lib/python3.4/site-packages/celery/worker/worker.py", line 226, in _process_task
    req.execute_using_pool(self.pool)
  File "./venv/lib/python3.4/site-packages/celery/worker/request.py", line 532, in execute_using_pool
    correlation_id=task_id,
  File "./venv/lib/python3.4/site-packages/celery/concurrency/base.py", line 155, in apply_async
    **options)
  File "./venv/lib/python3.4/site-packages/billiard/pool.py", line 1487, in apply_async
    self._quick_put((TASK, (result._job, None, func, args, kwds)))
TypeError: 'NoneType' object is not callable

䞊蚘の行は数秒ごずに繰り返され、キュヌからタスクが消費されるこずはありたせん。

最も参考になるコメント

このための👍。 4.0.1でも、たったく同じ問題が発生したす

党おのコメント54件

Celeryワヌカヌデヌモンがクラッシュしおいるため、ログで゚ラヌが繰り返されおいるため、systemdがデヌモンを再起動したす。

@ask 、 self._quick_putはどういうわけか定矩されおいたせん。 ビリダヌドは、呌び出す前にNoneの倀をチェックするか、䟋倖をキャッチする必芁がありたすか、それずもself._quick_putがNoneになるこずはありたせんか

billiard / pool.pyL1483をif self.threads or self._quick_put is None:に倉曎するず、Celeryはクラッシュしなくなりたしたが、䜕らかの理由でワヌカヌがタスクを凊理するこずはありたせん。

ロギングレベルDEBUGによるより詳现な出力

[2016-11-27 14:48:09,875: DEBUG/MainProcess] | Worker: Preparing bootsteps.
[2016-11-27 14:48:09,877: DEBUG/MainProcess] | Worker: Building graph...
[2016-11-27 14:48:09,878: DEBUG/MainProcess] | Worker: New boot order: {Timer, Hub, Pool, Autoscaler, StateDB, Beat, Consumer}
[2016-11-27 14:48:09,889: DEBUG/MainProcess] | Consumer: Preparing bootsteps.
[2016-11-27 14:48:09,889: DEBUG/MainProcess] | Consumer: Building graph...
[2016-11-27 14:48:09,898: DEBUG/MainProcess] | Consumer: New boot order: {Connection, Agent, Events, Mingle, Tasks, Control, Gossip, Heart, event loop}
[2016-11-27 14:48:09,908: DEBUG/MainProcess] | Worker: Starting Hub
[2016-11-27 14:48:09,908: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:09,908: DEBUG/MainProcess] | Worker: Starting Pool
[2016-11-27 14:48:09,998: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:09,999: DEBUG/MainProcess] | Worker: Starting Consumer
[2016-11-27 14:48:10,000: DEBUG/MainProcess] | Consumer: Starting Connection
[2016-11-27 14:48:10,016: DEBUG/MainProcess] Start from server, version: 0.9, properties: {'cluster_name': 'rabbit<strong i="6">@rabbitmq</strong>', 'product': 'RabbitMQ', 'version': '3.5.6', 'information': 'Licensed under the MPL.
  See http://www.rabbitmq.com/', 'capabilities': {'authentication_failure_close': True, 'consumer_priorities': True, 'consumer_cancel_notify': True, 'per_consumer_qos': True, 'basic.nack': True, 'publisher_confirms': True, 'connection.blocked': True, 'exchange_exchange_bindings': True}, 'copyright': 'Copyright (C) 2007-2015 Pivotal Software, Inc.', 'platform': 'Erlang/OTP'}, mechanisms: ['AMQPLAIN', 'PLAIN'], locales: ['en_US']
[2016-11-27 14:48:10,018: INFO/MainProcess] Connected to amqp://user:**@10.136.131.6:5672//
[2016-11-27 14:48:10,018: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:10,019: DEBUG/MainProcess] | Consumer: Starting Events
[2016-11-27 14:48:10,031: DEBUG/MainProcess] Start from server, version: 0.9, properties: {'cluster_name': 'rabbit<strong i="7">@rabbitmq</strong>', 'product': 'RabbitMQ', 'version': '3.5.6', 'information': 'Licensed under the MPL.  See http://www.rabbitmq.com/', 'capabilities': {'authentication_failure_close': True, 'consumer_priorities': True, 'consumer_cancel_notify': True, 'per_consumer_qos': True, 'basic.nack': True, 'publisher_confirms': True, 'connection.blocked': True, 'exchange_exchange_bindings': True}, 'copyright': 'Copyright (C) 2007-2015 Pivotal Software, Inc.', 'platform': 'Erlang/OTP'}, mechanisms: ['AMQPLAIN', 'PLAIN'], locales: ['en_US']
[2016-11-27 14:48:10,034: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:10,034: DEBUG/MainProcess] | Consumer: Starting Mingle
[2016-11-27 14:48:10,035: INFO/MainProcess] mingle: searching for neighbors
[2016-11-27 14:48:10,036: DEBUG/MainProcess] using channel_id: 1
[2016-11-27 14:48:10,041: DEBUG/MainProcess] Channel open
[2016-11-27 14:48:10,061: DEBUG/MainProcess] Start from server, version: 0.9, properties: {'cluster_name': 'rabbit<strong i="8">@rabbitmq</strong>', 'product': 'RabbitMQ', 'version': '3.5.6', 'information': 'Licensed under the MPL.  See http://www.rabbitmq.com/', 'capabilities': {'authentication_failure_close': True, 'consumer_priorities': True, 'consumer_cancel_notify': True, 'per_consumer_qos': True, 'basic.nack': True, 'publisher_confirms': True, 'connection.blocked': True, 'exchange_exchange_bindings': True}, 'copyright': 'Copyright (C) 2007-2015 Pivotal Software, Inc.', 'platform': 'Erlang/OTP'}, mechanisms: ['AMQPLAIN', 'PLAIN'], locales: ['en_US']
[2016-11-27 14:48:10,063: DEBUG/MainProcess] using channel_id: 1
[2016-11-27 14:48:10,064: DEBUG/MainProcess] Channel open
[2016-11-27 14:48:11,189: INFO/MainProcess] mingle: sync with 3 nodes
[2016-11-27 14:48:11,190: DEBUG/MainProcess] mingle: processing reply from celery<strong i="9">@worker03</strong>
[2016-11-27 14:48:11,190: DEBUG/MainProcess] mingle: processing reply from celery<strong i="10">@worker02</strong>
[2016-11-27 14:48:11,190: DEBUG/MainProcess] mingle: processing reply from celery<strong i="11">@worker01</strong>
[2016-11-27 14:48:11,190: INFO/MainProcess] mingle: sync complete
[2016-11-27 14:48:11,191: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:11,191: DEBUG/MainProcess] | Consumer: Starting Tasks
[2016-11-27 14:48:11,244: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:11,244: DEBUG/MainProcess] | Consumer: Starting Control
[2016-11-27 14:48:11,244: DEBUG/MainProcess] using channel_id: 2
[2016-11-27 14:48:11,246: DEBUG/MainProcess] Channel open
[2016-11-27 14:48:11,251: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:11,251: DEBUG/MainProcess] | Consumer: Starting Gossip
[2016-11-27 14:48:11,252: DEBUG/MainProcess] using channel_id: 3
[2016-11-27 14:48:11,253: DEBUG/MainProcess] Channel open
[2016-11-27 14:48:11,257: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:11,258: DEBUG/MainProcess] | Consumer: Starting Heart
[2016-11-27 14:48:11,259: DEBUG/MainProcess] using channel_id: 1
[2016-11-27 14:48:11,260: DEBUG/MainProcess] Channel open
[2016-11-27 14:48:11,261: DEBUG/MainProcess] ^-- substep ok
[2016-11-27 14:48:11,261: DEBUG/MainProcess] | Consumer: Starting event loop
[2016-11-27 14:48:11,264: INFO/MainProcess] Received task: wakatime.tasks.cache_coding_activity[0eba267c-72e4-40ea-91dd-a1a7ab17c514]
[2016-11-27 14:48:11,265: DEBUG/MainProcess] TaskPool: Apply <function _fast_trace_task at 0x7ff469300950> (args:('wakatime.tasks.cache_coding_activity', '0eba267c-72e4-40ea-91dd-a1a7ab17c514', {'argsrepr': '()', 'task': 'wakatime.tasks.cache_coding_activity', 'lang': 'py', 'parent_id': '81f0c7ce-1396-496f-bf64-ae243736c845', 'timelimit': [None, None], 'root_id': '128647cc-f558-4b7d-bafc-338d186b5cfa', 'reply_to': 'e3c2b067-a058-3aa0-a3a1-384d4b917bbf', 'retries': 0, 'expires': None, 'delivery_info': {'exchange': '', 'priority': None, 'routing_key': 'cache', 'redelivered': True}, 'id': '0eba267c-72e4-40ea-91dd-a1a7ab17c514', 'correlation_id': '0eba267c-72e4-40ea-91dd-a1a7ab17c514', 'group': None, 'eta': None, 'kwargsrepr': "{'cache_projects': True, 'timeout': 15, 'user_id': UUID('d9c69ce0-f194-45a6-83cf-98f931fca8aa'), 'writes_only': False}", 'origin': 'gen3021<strong i="12">@worker02</strong>'}, '[[], {"cache_projects": true, "timeout": 15, "user_id": "d9c69ce0-f194-45a6-83cf-98f931fca8aa", "writes_only": false}, {"callbacks": null, "chain": null, "chord": null, "errbacks": null}]', 'application/json', 'utf-8') kwargs:{})
[2016-11-27 14:48:11,266: CRITICAL/MainProcess] Unrecoverable error: TypeError("'NoneType' object is not callable",)
Traceback (most recent call last):
  File "./venv/src/celery/celery/worker/worker.py", line 203, in start
    self.blueprint.start(self)
  File "./venv/src/celery/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "./venv/src/celery/celery/bootsteps.py", line 370, in start
    return self.obj.start()
  File "./venv/src/celery/celery/worker/consumer/consumer.py", line 318, in start
    blueprint.start(self)
  File "./venv/src/celery/celery/bootsteps.py", line 119, in start
    step.start(parent)
  File "./venv/src/celery/celery/worker/consumer/consumer.py", line 593, in start
    c.loop(*c.loop_args())
  File "./venv/src/celery/celery/worker/loops.py", line 47, in asynloop
    consumer.consume()
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 470, in consume
    self._basic_consume(T, no_ack=no_ack, nowait=False)
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 591, in _basic_consume
    no_ack=no_ack, nowait=nowait)
  File "./venv/lib/python3.4/site-packages/kombu/entity.py", line 737, in consume
    arguments=self.consumer_arguments)
  File "./venv/lib/python3.4/site-packages/amqp/channel.py", line 1578, in basic_consume
    wait=None if nowait else spec.Basic.ConsumeOk,
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 73, in send_method
    return self.wait(wait, returns_tuple=returns_tuple)
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 93, in wait
    self.connection.drain_events(timeout=timeout)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 464, in drain_events
    return self.blocking_read(timeout)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 469, in blocking_read
    return self.on_inbound_frame(frame)
  File "./venv/lib/python3.4/site-packages/amqp/method_framing.py", line 88, in on_frame
    callback(channel, msg.frame_method, msg.frame_args, msg)
  File "./venv/lib/python3.4/site-packages/amqp/connection.py", line 473, in on_inbound_method
    method_sig, payload, content,
  File "./venv/lib/python3.4/site-packages/amqp/abstract_channel.py", line 142, in dispatch_method
    listener(*args)
  File "./venv/lib/python3.4/site-packages/amqp/channel.py", line 1613, in _on_basic_deliver
    fun(msg)
  File "./venv/lib/python3.4/site-packages/kombu/messaging.py", line 617, in _receive_callback
    return on_m(message) if on_m else self.receive(decoded, message)
  File "./venv/src/celery/celery/worker/consumer/consumer.py", line 567, in on_task_received
    callbacks,
  File "./venv/src/celery/celery/worker/strategy.py", line 145, in task_message_handler
    handle(req)
  File "./venv/src/celery/celery/worker/worker.py", line 221, in _process_task_sem
    return self._quick_acquire(self._process_task, req)
  File "./venv/lib/python3.4/site-packages/kombu/async/semaphore.py", line 62, in acquire
    callback(*partial_args, **partial_kwargs)
  File "./venv/src/celery/celery/worker/worker.py", line 226, in _process_task
    req.execute_using_pool(self.pool)
  File "./venv/src/celery/celery/worker/request.py", line 532, in execute_using_pool
    correlation_id=task_id,
  File "./venv/src/celery/celery/concurrency/base.py", line 155, in apply_async
    **options)
  File "./venv/lib/python3.4/site-packages/billiard/pool.py", line 1487, in apply_async
    self._quick_put((TASK, (result._job, None, func, args, kwds)))
TypeError: 'NoneType' object is not callable
[2016-11-27 14:48:11,273: DEBUG/MainProcess] | Worker: Closing Hub...
[2016-11-27 14:48:11,274: DEBUG/MainProcess] | Worker: Closing Pool...
[2016-11-27 14:48:11,274: DEBUG/MainProcess] | Worker: Closing Consumer...
[2016-11-27 14:48:11,274: DEBUG/MainProcess] | Worker: Stopping Consumer...
[2016-11-27 14:48:11,274: DEBUG/MainProcess] | Consumer: Closing Connection...
[2016-11-27 14:48:11,275: DEBUG/MainProcess] | Consumer: Closing Events...
[2016-11-27 14:48:11,275: DEBUG/MainProcess] | Consumer: Closing Mingle...
[2016-11-27 14:48:11,275: DEBUG/MainProcess] | Consumer: Closing Tasks...
[2016-11-27 14:48:11,275: DEBUG/MainProcess] | Consumer: Closing Control...
[2016-11-27 14:48:11,275: DEBUG/MainProcess] | Consumer: Closing Gossip...
[2016-11-27 14:48:11,276: DEBUG/MainProcess] | Consumer: Closing Heart...
[2016-11-27 14:48:11,276: DEBUG/MainProcess] | Consumer: Closing event loop...
[2016-11-27 14:48:11,276: DEBUG/MainProcess] | Consumer: Stopping event loop...
[2016-11-27 14:48:11,276: DEBUG/MainProcess] | Consumer: Stopping Heart...
[2016-11-27 14:48:11,277: DEBUG/MainProcess] | Consumer: Stopping Gossip...
[2016-11-27 14:48:11,278: INFO/MainProcess] Received task: wakatime.tasks.cache_coding_activity[f786fc75-0518-4893-8988-ff7f063edd12]
[2016-11-27 14:48:11,278: DEBUG/MainProcess] TaskPool: Apply <function _fast_trace_task at 0x7ff469300950> (args:('wakatime.tasks.cache_coding_activity', 'f786fc75-0518-4893-8988-ff7f063edd12', {'argsrepr': '()', 'task': 'wakatime.tasks.cache_coding_activity', 'lang': 'py', 'parent_id': '81f0c7ce-1396-496f-bf64-ae243736c845', 'timelimit': [None, None], 'root_id': '128647cc-f558-4b7d-bafc-338d186b5cfa', 'reply_to': 'e3c2b067-a058-3aa0-a3a1-384d4b917bbf', 'retries': 0, 'expires': None, 'delivery_info': {'exchange': '', 'priority': None, 'routing_key': 'cache', 'redelivered': True}, 'id': 'f786fc75-0518-4893-8988-ff7f063edd12', 'correlation_id': 'f786fc75-0518-4893-8988-ff7f063edd12', 'group': None, 'eta': None, 'kwargsrepr': "{'cache_projects': True, 'timeout': 15, 'user_id': UUID('7056644f-2564-4074-b89e-631973879f44'), 'writes_only': False}", 'origin': 'gen3021<strong i="13">@worker02</strong>'}, '[[], {"cache_projects": true, "timeout": 15, "user_id": "7056644f-2564-4074-b89e-631973879f44", "writes_only": false}, {"callbacks": null, "chain": null, "chord": null, "errbacks": null}]', 'application/json', 'utf-8') kwargs:{})
[2016-11-27 14:48:11,279: INFO/MainProcess] Received task: wakatime.tasks.cache_coding_activity[d5c8dc57-116c-467d-9924-e2999280c2f8]
[2016-11-27 14:48:11,280: INFO/MainProcess] Received task: wakatime.tasks.cache_coding_activity[460ef864-e482-4b0f-8580-d0095750bae6]
[2016-11-27 14:48:11,281: DEBUG/MainProcess] Closed channel #3
[2016-11-27 14:48:11,281: DEBUG/MainProcess] | Consumer: Stopping Control...
[2016-11-27 14:48:11,283: DEBUG/MainProcess] Closed channel #2
[2016-11-27 14:48:11,283: DEBUG/MainProcess] | Consumer: Stopping Tasks...
[2016-11-27 14:48:11,284: DEBUG/MainProcess] Canceling task consumer...
[2016-11-27 14:48:11,286: DEBUG/MainProcess] | Consumer: Stopping Mingle...
[2016-11-27 14:48:11,286: DEBUG/MainProcess] | Consumer: Stopping Events...
[2016-11-27 14:48:11,286: DEBUG/MainProcess] | Consumer: Stopping Connection...
[2016-11-27 14:48:11,286: DEBUG/MainProcess] | Worker: Stopping Pool...
[2016-11-27 14:48:12,800: DEBUG/MainProcess] result handler: all workers terminated
[2016-11-27 14:48:12,801: DEBUG/MainProcess] | Worker: Stopping Hub...
[2016-11-27 14:48:12,801: DEBUG/MainProcess] | Consumer: Shutdown Heart...
[2016-11-27 14:48:12,802: DEBUG/MainProcess] | Consumer: Shutdown Gossip...
[2016-11-27 14:48:12,802: DEBUG/MainProcess] | Consumer: Shutdown Control...
[2016-11-27 14:48:12,802: DEBUG/MainProcess] | Consumer: Shutdown Tasks...
[2016-11-27 14:48:12,803: DEBUG/MainProcess] Canceling task consumer...
[2016-11-27 14:48:12,803: DEBUG/MainProcess] Closing consumer channel...
[2016-11-27 14:48:12,803: DEBUG/MainProcess] | Consumer: Shutdown Events...
[2016-11-27 14:48:12,804: DEBUG/MainProcess] Closed channel #1
[2016-11-27 14:48:12,805: DEBUG/MainProcess] | Consumer: Shutdown Connection...
[2016-11-27 14:48:12,806: DEBUG/MainProcess] Closed channel #1
[2016-11-27 14:48:12,807: DEBUG/MainProcess] removing tasks from inqueue until task handler finished

これはCelery4.xで導入されたした。これは、 3.1.24にダりングレヌドするずトレヌスバックが防止されるためです。

LinuxPython3.4ではここでは起こりたせん。 ワヌカヌを開始するために䜿甚する匕数は䜕ですか

_quick_putは決しおNoneであっおはなりたせん。 これは起動時ですか、それずも垞に接続障害の埌に発生したすか

タスクの実行䞭にブロヌカヌを停止しお再珟しようずしたしたが、ただ再珟できたせん。

垞に起動時。 ワヌカヌの匕数は次のずおりです。

/opt/app/venv/bin/python /opt/app/venv/bin/celery worker --app=wakatime.celery --workdir=/opt/app --logfile=/var/log/celery/worker.log --loglevel=INFO --concurrency=50 --exclude-queues=medium,low,cache

このための👍。 4.0.1でも、たったく同じ問題が発生したす

@askワヌカヌが起動したずきに凊理されるのを埅っおいるブロヌカヌ䞊のメッセヌゞがあるずきはい぀でも、それを再珟するこずができたす。 これは、ビヌトを䜿甚する堎合によくあるこずですが、私の堎合です。 ビヌトサヌビスがワヌカヌの前にオンラむンになるず、䞊蚘の問題のためにワヌカヌを起動できなくなりたす。 私はすべおのこずに぀いおPython2.7を䜿甚しおおり、それを䞀貫しお再珟するこずができたす。

これは3539で述べたものず同じ゚ラヌです

@jmesquitaは私のシナリオず䞀臎しおいたす。これは、ワヌカヌを開始するずきに、ブロヌカヌで垞にキュヌに保留䞭のメッセヌゞがあるためです。

@alanhamlettこれを修正しおコヌドを読み取ろうずしおいたすが、セロリは初めおなので、しばらく時間がかかる堎合がありたす。 私にずっお奇劙なのは、セロリずセロリのメッセヌゞを䜿甚する倚くの人々がデフォルトで劎働者のキュヌに入れられおいるため、これがコミュニティ内で爆発的に増加しおいないこずです。 どういうわけか誀甚しおいるのではないかず思いたす。

コヌドを少し掘り䞋げおみるず、 _quick_putはAsyncPool._create_write_handlersによっお割り圓おられ、 AsyncPool.register_with_event_loopによっお呌び出され、 celery.worker.loops.asynloopによっお呌び出されたす。 衚面的には、問題はasynloopが最初にconsumer.consume()を呌び出し、次にobj.register_with_event_loopを呌び出すこずであるように芋えたす。これにより、 _quick_putがNoneになるconsume()内から呌び出されたす。

これは、むベントルヌプの開始時にキュヌにメッセヌゞがない堎合に問題が発生しない理由を説明したす。これは、 consume()は䜕も行わず、次に呌び出されたずきにregister_with_event_loopが呌び出されるためです。すでに呌び出されおいたす。

移動するこずでこれを修正できたす

obj.controller.register_with_event_loop(hub)
obj.register_with_event_loop(hub)

consumer.consume()の前ですが、これはもちろん非垞に単玔なそしおおそらく間違った修正にすぎたせん。

そこで、セロリのビヌトメッセヌゞを䞀時的にするこずで問題を回避したした。これは、ずにかく私の意図した動䜜です。 Celeryずそのコヌドベヌスの経隓が少し増えたら、すぐにこれを再怜蚎したす。

@jmesquita 

そこで、セロリのビヌトメッセヌゞを䞀時的にするこずで問題を回避したした

これにより、゚ラヌが発生しなくなりたす。 提案ありがずうございたす。

このバグを再珟できるのは、耇数のキュヌから消費しようずしおいる堎合のみです。 すべおが単䞀のキュヌから消費される堎合、起動は期埅どおりに機胜したすキュヌ䞊のメッセヌゞは適切に消費されたす。

@adewes私はあなたの提案した解決策をテストしたした、そしお少なくずも衚面的にはそれは問題を解決するようです。

@adewes提案された倉曎に぀いお話し合うこずができるように、プルリク゚ストを発行できたすか

この問題に関する曎新はありたすか これは、生産を含め、珟圚私たちに倧きな問題を匕き起こしおいたす。 TypeErrorの問題が発生したため、ロヌカルでテストするこずもできたせん。 Celery3にダりングレヌドする必芁がある堎合がありたす。

私は今のずころそれを解決するこずができたせんでした、たた今のずころバヌゞョン3にダりングレヌドされたした、問題がすぐに修正されるこずを願っおいたす。 @thedrow私の「クむックフィックス」では問題の完党な解決策が埗られなかったため、プルリク゚ストを開いおいたせん。 私は䜿甚されおいるコンポヌネントのデヌタフロヌに完党に粟通しおいないためここではいく぀かのラむブラリが䜿甚されおいたす、残念ながら珟圚これをさらにデバッグするこずはできたせん。

v2タスク蚭蚈でのメッセヌゞヘッダヌの新しい䜿甚法に䟝存しおいる可胜性があるため、実際にダりングレヌドできるかどうかさえわかりたせん。

@ ask--デバッグに圹立぀正確な環境を確認できるように、画面共有などを喜んで提䟛したす。必芁に応じお、リモヌトデバッグを開いおみおください。 私たちはCelery4に党面的に参加し、珟圚は劎働者の生産を開始できないため、少し拘束されおいたす。

今のずころ、私のフォヌクをむンストヌルしお、本番環境で動䜜させるこずができたす。

pip install -e git://github.com/alanhamlett/celery.git@73147a9da31f2932eb4778e9474fbe72f23d21c2#egg=Celery

これを修正するために3752を開いたずころですが、最初にバグをカバヌするための適切なテストを芋぀ける必芁がありたす。

本圓にありがずう。

私は倢䞭になっおいるず思い始めたした...4.0.2珟圚は4.0.0にアップグレヌドしようずしたしたが、そのアップグレヌドで、突然のself.retry()もすべお機胜しなくなりたした。

CLIで明瀺的にキュヌを指定するこずは、りォヌクアラりンドのように芋えたす4.0.0の堎合

CLIでキュヌを明瀺的に指定したす。 ただ問題がありたした。

2017幎1月13日金曜日午前5時35分、Karol [email protected]
曞きたした

CLIで明瀺的にキュヌを指定するこずは、りォヌクアラりンドのように芋えたす
4.0.0

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/celery/celery/issues/3620#issuecomment-272412258 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/ABRHQSzvyRcQI5qvfufNwPJvXNElcQKPks5rR1NggaJpZM4K7LEz
。

@jdotjdot-私は同じこずを芋おいたす。 コマンドラむンでのキュヌの指定。
キュヌにデヌタがある堎合にのみ問題が発生したす。 キュヌが空の堎合、ワヌカヌを起動しお実行できたす。

+1

この正確な問題がありたす。 唯䞀の解決策は私のブロヌカヌをリセットするようですこれはキュヌには適しおいたせん。

+1

この埌、3773、基本機胜の欠劂、および過床の耇雑さ私はおそらくCeleryをhttps://github.com/closeio/tasktigerに眮き換えたす。 誰かが3752を匕き継ぎたいですか 必芁なのは、問題をカバヌするためのテストを䜜成するこずだけです。

@alanhamlett tasktigerを知りたせんでしたが、有望に芋えたす。 それがどれほど成熟しおいお、安定しおいお、信頌できるか知っおいたすか 私は通垞、マむクロフレヌムワヌクの倧ファンですが、Celeryは倧きく成長し、いく぀かの倖郚䟝存関係ずPython3ぞの切り替えがありたす...少なくずも私の展開では物事が制埡䞍胜になっおいるようです。

PR3752にすでに修正があるこずを考えるず、これをリリヌスする蚈画は䜕ですか これは、実皌働環境でCelery 4.xを䜿甚できなくなるため、重倧なバグであるこずに泚意しおください。 保留䞭のメッセヌゞが入っおくるからずいっお、ワヌカヌを死なせるこずはできたせん。

これも統合されるのを芋たい

劎働者の儚い性質がセロリにずっお非垞に基本的であるため、これよりも優先するに倀する他の問題が倚すぎるずは想像できたせん。 これは私たちがProdに行くのを劚げる唯䞀のこずです。 誰かがそれがい぀察凊されるかに぀いおの芋積もりを持っおいたすか

@johnatron私は同じこずを考えたしたが、Prodに新しく導入された他の耇数のバグに遭遇したした。 ダりングレヌドする必芁がありたしたが、メッセヌゞング仕様が3.xず4.xの間で互換性がないため、これは困難です。 たた、tasktigerのようなCeleryの代替案も怜蚎したした。 ProdのCelery4.xxに泚意しおください。

メッセヌゞ仕様は、最新バヌゞョンの3.xず盞互互換性がありたす。

私はこれが察凊されおいないこずにかなり驚いおいるこずを認めたす。 䜿っおいたす
珟圚生産䞭のアランのフォヌク。

2017幎2月13日月曜日午埌2時5分、Alan [email protected]
曞きたした

@johnatron https://github.com/johnatron同じこずを考えたしたが、
Prodで新しく導入された他の耇数のバグに遭遇したした。 ダりングレヌドする必芁がありたした、
メッセヌゞング仕様は3.x間で互換性がないため、これは困難です。
および4.x。 たた、tasktigerのようなCeleryの代替品を怜蚎させおくれたした
https://github.com/closeio/tasktiger 。 のCelery4.xxに泚意しおください
補品

—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/celery/celery/issues/3620#issuecomment-279489134 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/ABRHQZkHixjDu37IA7PbAW6iJYcVTGevks5rcKligaJpZM4K7LEz
。

この䞍幞な遅れを考慮しお、私は既知のCelery4の問題に察するいく぀かの修正をgit+http://github.com/Eugeny/celery#egg=celery==4.0.2.1にマヌゞするこずにしたした。
これも

  • この問題に察する@alanhamlettの修正
  • @HealthTechDevelopersによるdjango-celery-beatスケゞュヌルの修正がリロヌドされない

これたでのずころ、本番環境で正垞に機胜しおいたす

メッセヌゞ仕様は盞互互換性があるかもしれたせんが、Celery Canvasずチェヌン私たちがよく䜿甚する機胜に関しおは、バヌゞョン間に埮劙な互換性のない違いがありたす。 アプリをv3からv4に移怍するためにかなりの劎力が費やされたした。 戻らなければならないのは悪い時期です。

おお、フラブゞュスの日 ありがずう。

Python3.6ずcelery4.0.2を䜿甚しおも同じ問題が発生したす。

セロリをシャットダりンし、タスクを䜜成し、セロリを起動するず、すぐに゚ラヌTypeError: 'NoneType' object is not callableが発生したす。 @ask提案された修正ずマヌゞに぀いお怜蚎しおいただけたすか これにより、以前は満足しおいたCeleryのナヌザヌがCeleryを䜿い続けるこずができなくなりたす:(

お時間をいただきありがずうございたす、@ ask

「MicrosoftWindowsはサポヌトされなくなりたした。

テストスむヌトは合栌であり、CeleryはWindowsで動䜜しおいるようですが、このプラットフォヌムで問題を蚺断できないため、保蚌はできたせん。 このプラットフォヌムでのサポヌトが必芁な䌁業の堎合は、ご連絡ください。」
おそらく修正されるこずはないでしょう。

@tiptoetttこれはWindowsに固有の問題ではありたせん。 私はMacを䜿甚しおいたす。 皆さんのコメントをよく芋おいただけたせんか このため、開発者はCeleryを捚おるでしょう。 私はセロリを5幎間䜿甚しおいたすが、それは倧きな問題です。 この問題がない堎合は、以前のバヌゞョン3.1.25を䜿甚したす。

この問題もありたす

lpiner<strong i="6">@host</strong>:~$ uname -a
Linux host 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
lpiner<strong i="9">@host</strong>:~$ celery --version
4.0.2 (latentcall)

これは、問題を匕き起こしおいるず思われるコヌド行です。

task_queues = (
    Queue('queue1_name', Exchange('default'), routing_key='default'),
    Queue('queue2_name', Exchange('default'), routing_key='general.routing_key'),
)

2番目のキュヌを削陀するず、問題は解決したす。

@ChillarAnandのcelery/kombu / issues / 675の投皿から私が理解しおいるこずから、この問題は4.0.3で解決されるはずですよね

マスタヌブランチからビルドを開始しお以来、この問題は発生しおいたせん。

2017幎5月8日午埌5時58分、「Victor」 [email protected]は次のように曞いおいたす。

@ChillarAnandから私が理解しおいるこずから
https://github.com/ChillarAnandのcelery/kombu675ぞの投皿
https://github.com/celery/kombu/issues/675 、この問題は解決する必芁がありたす
4.0.3たでにね

—
コメントしたのでこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/celery/celery/issues/3620#issuecomment-300002736 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AC3sA400hzoX7V0GUrUSfYmry9SZ8eIRks5r34_pgaJpZM4K7LEz
。

おかげで、それはうたくいきたした

RabbitMQを䜿甚したCelery3.1.23Cipaterでも同じ問題が発生したした。 長いデバッグの埌、私は぀いにこのスレッドを芋぀け、3.1.25バヌゞョンを䜿甚しお問題を修正したした。 しかし、それは本圓に壁に頭をぶ぀けおいたした。

耇数のキュヌずハヌトビヌトを䜿甚したv4.0.2 (latentcall)での同じ問題。

v0.4.0.2の回避策に関する同じ問題は、 v3.xにダりングレヌドされたす

v4.0.2
私にずっお、この問題は目を芋匵るものです。 3.xぞのダりングレヌドは怜蚎しおいたせん。 新しいバヌゞョンがすぐにリリヌスされるこずを願っおいたす。

@ba1drはマスタヌからビルドしたす。 それは私のためにそれを修正したす。

@LPiner 、ありがずう、これは私のための問題を修正したした。 しかし、これは本番環境に察応した゜リュヌションではありたせんね。

@ba1drはTBHの遞択肢ずしおはあたりありたせん。 これか、3.xにダりングレヌドしたす。
私たちは問題なく本番環境で䜿甚しおいたすが、私たちの芏暡は1日あたりわずか数癟の仕事であり、あなたのマむレヌゞは異なる堎合がありたす。

たもなくリリヌスしたす。 4109を参照

ここでも圱響を受けたす。 ただ私たちを打぀。 リリヌスの準備ができたした

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡