芹菜任务中的print语句不起作用

时间:2018-05-26 14:57:49

标签: python django celery

我需要调试celery任务以查看它是否正常工作,所以我在print中放了一些tasks.py语句。在运行项目时,我发现任务成功运行但在控制台上没有打印任何内容。我该如何调试芹菜任务。

2 个答案:

答案 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中的更多细节。