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

print statement inside celery task not working

我需要调试 celery 任务以查看它是否正常工作,所以我在 tasks.py 中放了一些 print 语句。虽然 运行 我观察到该项目任务成功运行但未在控制台上打印任何内容。如何调试 celery 任务。

当 Celery 实际执行工作时,任务由不同的 Python 进程处理。根据您的配置方式,这些单独的进程可能无法访问您的控制台。相反,他们将写入 Celery 的日志文件(可以通过多种方式配置)。找到该文件,您将看到任务的打印输出。

所有这些都假设您确实按照 Gaurav Tomer 的评论所建议的那样重新启动了 Celery worker。

对于调试芹菜:

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

现在您可以调试您的任务了。 celery.

中有更多详细信息