我需要调试celery
任务以查看它是否正常工作,所以我在tasks.py
里面放了一些print
语句。在运行项目时,我观察到任务成功运行,但没有在控制台上打印任何内容。如何调试芹菜任务。
当 Celery 实际完成工作时,任务由不同的 Python 进程处理。根据配置方式,这些单独的进程可能无法访问您的控制台。相反,他们将写入 Celery 的日志文件(可以通过各种方式进行配置(。找到该文件,您将看到任务的打印输出。
所有这些都假设你确实重新启动了芹菜工人,正如Gaurav Tomer的评论所暗示的那样。
对于调试芹菜:
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 localhost 6900
现在,您可以调试任务。 芹菜中的更多详细信息。
对于 Windows,请使用命令
celery -A <project_name>.celery worker --pool=solo -l INFO
使用该命令重新启动芹菜工作线程