我需要调试celery
任务以查看它是否正常工作,所以我在print
中放了一些tasks.py
语句。在运行项目时,我发现任务成功运行但在控制台上没有打印任何内容。我该如何调试芹菜任务。
答案 0 :(得分:1)
当Celery实际完成工作时,任务由不同的Python进程处理。根据您配置的方式,这些单独的进程可能无法访问您的控制台。相反,他们会写入Celery的日志文件(可以通过各种方式配置)。找到该文件,您将看到任务的打印输出。
所有这些都假设你确实重新启动了Celery工作人员,正如Gaurav Tomer的评论所示。
答案 1 :(得分:0)
对于调试芹菜:
from celery import task
from celery.contrib import rdb
@task()
def add(x, y):
result = x + y
rdb.set_trace() # <- set break-point
return result
跑完后你会看到这个日志:
[INFO/MainProcess] Received task:
tasks.add[d7261c71-4962-47e5-b342-2448bedd20e8]
[WARNING/PoolWorker-1] Remote Debugger:6900:
Please telnet 127.0.0.1 6900. Type `exit` in session to continue.
[2011-01-18 14:25:44,119: WARNING/PoolWorker-1] Remote Debugger:6900:
Waiting for client...
您需要telnet到端口,如下所示:
telnet localhost 6900
现在您可以调试您的任务。 celery中的更多细节。