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
master
๋ถ๊ธฐ์ ๋ฌธ์ ๊ฐ ์์์ ํ์ธํ์ต๋๋ค.๋์ผํ ์ฌ์๊ณผ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง ๋ค๋ฅธ ๊ธฐ๊ณ๊ฐ ์๋ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ ํํ ํ์คํ์ง ์์ต๋๋ค.
์์ ์ ์๋นํด์ผ ํฉ๋๋ค.
์์ ์ด ์๋ฝ๋๊ณ ์ญ์ถ์ (traceback)์ด ๊ธฐ๋ก๋ ๋ค์ ์์ ์๋ ์ด๋ค ์ด์ ๋ก ๋ธ๋ก์ปค์ ๋ค์ ์ฐ๊ฒฐํฉ๋๋ค. ์ด๊ฒ์ ์์ํ ๋ฐ๋ณต๋ฉ๋๋ค.
[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
์์ ์ค์ ๋ช ์ด๋ง๋ค ๊ณ์ ๋ฐ๋ณต๋๋ฉฐ ๋๊ธฐ์ด์์ ์์ ์ด ์ฌ์ฉ๋์ง ์์ต๋๋ค.
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
์ด๊ฒ์ 3.1.24
๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ๋ฉด ์ญ์ถ์ ์ ๋ฐฉ์งํ๊ธฐ ๋๋ฌธ์ Celery 4.x์์ ๋์
๋์์ต๋๋ค.
์ฌ๊ธฐ Linux Python 3.4์์๋ ๋ฐ์ํ์ง ์์ต๋๋ค. ์์ ์๋ฅผ ์์ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์ธ์๋ ๋ฌด์์ ๋๊น?
_quick_put์ None btw๊ฐ ๋์ด์๋ ์๋ฉ๋๋ค. ์ด๊ฒ์ ์์ ์ ๋ฐ์ํฉ๋๊น ์๋๋ฉด ํญ์ ์ฐ๊ฒฐ ์คํจ ํ์ ๋ฐ์ํฉ๋๊น?
์์ ์ ์คํํ๋ ๋์ ๋ธ๋ก์ปค๋ฅผ ์ค์งํ์ฌ ์ฌ์์ฐ์ ์๋ํ์ง๋ง ์ฌ์ ํ ์ฌ์์ฐ์ ์ด์ด ์์ต๋๋ค.
ํญ์ ์์ํ ๋. ์์ ์ ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
/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 ์์ ์๊ฐ ์ฌ ๋ ์ฒ๋ฆฌ ๋๊ธฐ ์ค์ธ ๋ฉ์์ง๊ฐ ๋ธ๋ก์ปค์ ์์ ๋๋ง๋ค ์ฌ์์ฐํ๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ ๋นํธ๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ด๋ฉฐ ์ ๊ฒฝ์ฐ์ ๋๋ค. ๋นํธ ์๋น์ค๊ฐ ์์ ์๋ณด๋ค ๋จผ์ ์จ๋ผ์ธ ์ํ๊ฐ ๋๋ฉด ์์์ ์ธ๊ธํ ๋ฌธ์ ๋ก ์ธํด ์์ ์๋ฅผ ์์ํ ์ ์์ต๋๋ค. ์ ๋ ๋ชจ๋ ๋ฌธ์ ์ python 2.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
๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ์์ ํ
์คํธํ ์๋ ์์ต๋๋ค. Celery 3๋ก ๋ค์ ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํ ์๋ ์์ต๋๋ค.
๋๋ ์ง๊ธ๊น์ง ๊ทธ๊ฒ์ ํด๊ฒฐํ ์ ์์๊ณ ์ง๊ธ์ ๋ฒ์ 3์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ต๋๋ค. ๋ฌธ์ ๊ฐ ๊ณง ์์ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. @thedrow ๋ด "๋น ๋ฅธ ์์ "์ผ๋ก ๋ฌธ์ ๊ฐ ์์ ํ ํด๊ฒฐ๋์ง ์์์ผ๋ฏ๋ก ๋์ด์ค๊ธฐ ์์ฒญ์ ์ด์ง ์์ต๋๋ค. ๋๋ ์ฌ์ฉ๋ ๊ตฌ์ฑ ์์์ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ ํ ์ ํตํ์ง ์์ผ๋ฏ๋ก(์ฌ๊ธฐ์๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์) ๋ถํํ๋ ์ง๊ธ ๋น์ฅ ๋ ์ด์ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.
v2 ์์ ๋์์ธ์์ ์๋ก์ด ๋ฉ์์ง ํค๋ ์ฌ์ฉ์ ์์กดํ๊ณ ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ ์ ์๋์ง์กฐ์ฐจ ํ์ ํ ์ ์์ต๋๋ค.
@ask--๋๋ฒ๊ทธ์ ๋์์ด ๋๋ ์ ํํ ํ๊ฒฝ์ ๋ณผ ์ ์๋๋ก ํ๋ฉด ๊ณต์ ๋๋ ๋ฌด์์ด๋ ํจ๊ป ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์๊ฒฉ ๋๋ฒ๊ทธ๋ฅผ ์ด์ด๋ณผ ์๋ ์์ต๋๋ค. Celery 4์ ์ฌ์ธํ๊ณ ์ด์ ์์ ์๋ฅผ ํ๋ก๋์ ํ๊ฒฝ์์ ์์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ์ ์ ์ฝ์ด ์์ต๋๋ค.
์ง๊ธ์ ๋ด ํฌํฌ๋ฅผ ์ค์นํ์ฌ ํ๋ก๋์ ํ๊ฒฝ์์ ์คํํ ์ ์์ต๋๋ค.
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 Duleba [email protected]
์ผ๋ค:
CLI์์ ๋ช ์์ ์ผ๋ก ๋๊ธฐ์ด์ ์ง์ ํ๋ ๊ฒ์ ๋๋ฌ๋ณด๊ธฐ(on
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๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ๋๋ฌธ์ ์ค์ํ ๋ฒ๊ทธ์ ๋๋ค. ๋๊ธฐ ์ค์ธ ๋ฉ์์ง๊ฐ ๋ค์ด์๋ค๊ณ ํด์ ์์ ์๋ฅผ ์ฃฝ๊ฒ ํ ์๋ ์์ต๋๋ค.
์ด๊ฒ๋ ํฉ์ฒด๋๊ฑฐ ๋ณด๊ณ ์ถ๋ค
์์ ์์ ์ผ์์ ์ธ ํน์ฑ์ด Celery์ ๋งค์ฐ ๊ธฐ๋ณธ์ด๊ธฐ ๋๋ฌธ์ ์ด ๋ฌธ์ ๋ณด๋ค ๋ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ๊ฐ์น๊ฐ ์๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋๋ฌด ๋ง๋ค๊ณ ์์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ Prod๋ก ๊ฐ๋ ๊ฒ์ ๋ง๋ ์ ์ผํ ๊ฒ์ ๋๋ค. ์ธ์ ํด๊ฒฐ๋ ์ง ์์ํ๋ ์ฌ๋์ด ์์ต๋๊น?
@johnatron ์ ๋ ๊ฐ์ ์๊ฐ์ ํ์ง๋ง Prod์์ ์๋ก ๋์ ๋ ์ฌ๋ฌ ๋ฒ๊ทธ์ ๋ถ๋ช์ณค์ต๋๋ค. ๋ฉ์์ง ์ฌ์์ด 3.x์ 4.x ๊ฐ์ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์ด๊ทธ๋ ์ด๋ํด์ผ ํ์ต๋๋ค. ๋ํ tasktiger ์ ๊ฐ์ Celery์ ๋์์ ์ดํด๋ณด๊ฒ ํ์ต๋๋ค. Prod์์ Celery 4.xx์ ์ฃผ์ํ์ญ์์ค.
๋ฉ์์ง ์ฌ์์ ์ต์ ๋ฒ์ ์ 3.x์ ์ํธ ํธํ๋ฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์๋ค๋ ์ฌ์ค์ ์๋นํ ๋๋์ต๋๋ค. ๋๋ ์ฌ์ฉํ๊ณ ์๋ค
Alan์ ํฌํฌ๋ ํ์ฌ ์์ฐ ์ค์
๋๋ค.
2017๋
2์ 13์ผ ์์์ผ ์คํ 2์ 5๋ถ, Alan Hamlett [email protected]
์ผ๋ค:
@johnatron https://github.com/johnatron ์ ๋ ๊ฐ์ ์๊ฐ์ด์์ง๋ง
Prod์์ ์๋ก ๋์ ๋ ์ฌ๋ฌ ๋ค๋ฅธ ๋ฒ๊ทธ์ ๋ถ๋ช์ณค์ต๋๋ค. ๋ค์ด๊ทธ๋ ์ด๋๋ฅผ ํด์ผ ํ๊ณ ,
๋ฉ์์ง ์ฌ์์ด 3.x ๊ฐ์ ํธํ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ด๋ ต์ต๋๋ค.
๋ฐ 4.x. ๋ํ tasktiger์ ๊ฐ์ Celery์ ๋์์ ์ดํด๋ณด๊ฒ ํ์ต๋๋ค.
https://github.com/closeio/tasktiger . Celery 4.xx์ ์ฃผ์ํ์ญ์์ค.
์ฐ๋ฅด๋ค.โ
๋น์ ์ด ์ธ๊ธ๋์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/celery/celery/issues/3620#issuecomment-279489134 ๋๋ ์์๊ฑฐ
์ค๋ ๋
https://github.com/notifications/unsubscribe-auth/ABRHQZkHixjDu37IA7PbAW6iJYcVTGevks5rcKligaJpZM4K7LEz
.
์ด ๋ถํํ ์ง์ฐ์ ๋น์ถ์ด ๋๋ ์๋ ค์ง Celery 4 ๋ฌธ์ ์ ๋ํ ๋ช ๊ฐ์ง ์์ ์ฌํญ์ git+http://github.com/Eugeny/celery#egg=celery==4.0.2.1
์ ๋ณํฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค.
django-celery-beat
์ผ์ ์์ ์ด ๋ค์ ๋ก๋๋์ง ์์์ง๊ธ๊น์ง ํ๋ก๋์ ์์ ์ ์๋
๋ฉ์์ง ์ฌ์์ ์ํธ ํธํ๋ ์ ์์ง๋ง Celery Canvas์ ์ฐ๊ฒฐ(์ฐ๋ฆฌ๊ฐ ๋ง์ด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ)๊ณผ ๊ด๋ จํ์ฌ ๋ฒ์ ๊ฐ์ (๋ฏธ๋ฌํ๊ฒ) ํธํ๋์ง ์๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ ์ฑ์ v3์์ v4๋ก ์ด์ํ๊ธฐ ์ํด ์๋นํ ๋ ธ๋ ฅ์ ๊ธฐ์ธ์์ต๋๋ค. ๋์๊ฐ์ผ ํ๋ ๊ฒ์ ๋์ ์๊ฐ์ด ๋ ๊ฒ์ ๋๋ค.
์ค ๋ฉ์ง ํ๋ฃจ! ๊ฐ์ฌํฉ๋๋ค.
Python 3.6 ๋ฐ celery 4.0.2๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์
๋ฌ๋ฆฌ๋ฅผ ์ข
๋ฃํ๊ณ ์์
์ ๋ง๋ค๊ณ ์
๋ฌ๋ฆฌ๋ฅผ ์์ํ๋ฉด ์ฆ์ TypeError: 'NoneType' object is not callable
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. @ask ์ ์๋ ์์ ์ฌํญ ๋ฐ ๋ณํฉ์ ๊ณ ๋ คํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด๊ฒ์ Celery์ ์ด์ ์ ๋ง์กฑํ๋ ์ฌ์ฉ์๊ฐ Celery๋ฅผ ๊ณ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์๊ฐ ๋ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค, @sk!
"Microsoft Windows๋ ๋ ์ด์ ์ง์๋์ง ์์ต๋๋ค.
ํ
์คํธ ์ ํ๊ตฐ์ด ํต๊ณผ๋๊ณ Celery๊ฐ Windows์์ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ด์ง๋ง ์ด ํ๋ซํผ์์ ๋ฌธ์ ๋ฅผ ์ง๋จํ ์ ์์ผ๋ฏ๋ก ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ด ํ๋ซํผ์ ๋ํ ์ง์์ด ํ์ํ ๊ธฐ์
์ด๋ผ๋ฉด ์ฐ๋ฝ์ฃผ์ธ์."
์๋ง ๊ณ ์ณ์ง์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@tiptoettt ์ด๊ฒ์ Windows์๋ง ๊ตญํ๋ ๋ฌธ์ ๊ฐ ์๋๋๋ค. ์ ๋ ๋งฅ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ค๋ค ๋๊ธ ์์ธํ ๋ด์ฃผ์ค ์ ์๋์? ๊ฐ๋ฐ์๋ค์ ์ด๊ฒ ๋๋ฌธ์ 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'),
)
๋ ๋ฒ์งธ ๋๊ธฐ์ด์ ์ ๊ฑฐํ๋ฉด ๋ฌธ์ ๊ฐ ์ฌ๋ผ์ง๋๋ค.
celery/kombu/issues/675์ ์๋ @ChillarAnand ์ ๊ฒ์๋ฌผ์์ ๋ด๊ฐ ์ดํดํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ ๋ 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๋ฅผ ์ฌ์ฉํ๋ Celery 3.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๋ก ๋ค์ ๋ค์ด๊ทธ๋ ์ด๋ํ์ญ์์ค.
ํ๋ก๋์
ํ๊ฒฝ์์๋ ๋ฌธ์ ์์ด ์ฌ์ฉํ๊ณ ์์ง๋ง ๊ท๋ชจ๋ ํ๋ฃจ์ ์๋ฐฑ ๊ฐ์ ๋ถ๊ณผํ๋ฏ๋ก ๋ง์ผ๋ฆฌ์ง๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค.
๊ณง ์ถ์๋ ์์ ์ ๋๋ค. #4109 ์ฐธ์กฐ
์ฌ๊ธฐ์์๋ ์ํฅ์ ๋ฐ์ต๋๋ค. ๊ทธ๋ฅ ์ฐ๋ฆฌ๋ฅผ ๋๋ ค. ์ถ์ ์ค๋น ์๋ฃ!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๐์ด๋ฅผ ์ํด. 4.0.1์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํจ