django 打印语句内celery 任务不工作

ezykj2lf  于 2023-03-04  发布在  Go
关注(0)|答案(3)|浏览(257)

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

p8ekf7hl

p8ekf7hl1#

当Celery实际执行任务时,任务由不同的Python进程处理。根据你的配置方式,这些独立的进程可能无法访问你的控制台。相反,它们会写入Celery的日志文件(可以用各种方式配置)。找到那个文件,你就会看到任务的打印输出。
所有这些都假设您确实已经重新启动了celery 工人,正如Gaurav Tomer的评论所建议的那样。

lsmepo6l

lsmepo6l2#

对于调试celery :

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中。

jdzmm42g

jdzmm42g3#

对于Windows,请使用以下命令

celery -A <project_name>.celery worker --pool=solo -l INFO

使用以下命令重新启动Celepie Worker

相关问题