【问题标题】:Celerybeat not executing periodic tasksCelerybeat 不执行周期性任务
【发布时间】:2013-06-08 22:15:31
【问题描述】:

您如何诊断manage.py celerybeat 不执行任何任务的原因?

我正在通过 supervisord 使用以下命令运行 celerybeat:

/usr/local/myapp/src/manage.py celerybeat --schedule=/tmp/celerybeat-schedule-myapp --pidfile=/tmp/celerybeat-myapp.pid --loglevel=INFO

Supervisord 似乎可以正常运行 celerybeat,并且日志文件显示:

[2013-06-12 13:17:12,540: INFO/MainProcess] Celerybeat: Starting...
[2013-06-12 13:17:12,571: WARNING/MainProcess] Reset: Account for new __version__ field
[2013-06-12 13:17:12,571: WARNING/MainProcess] Reset: Account for new tz field
[2013-06-12 13:17:12,572: WARNING/MainProcess] Reset: Account for new utc_enabled field

我有几个在http://localhost:8000/admin/djcelery/periodictask 上显示为启用的周期性任务,应该每隔几分钟运行一次。但是,celerybeat 日志从不显示正在执行的任何内容。为什么会这样?

【问题讨论】:

    标签: python django django-celery celerybeat


    【解决方案1】:

    celerybeat 只会安排任务,不会执行它。 要执行任务,您还需要启动 worker。您可以一起开始芹菜节拍以及工人。 我使用“celeryd -B”

    在您的情况下,它应该如下所示:

    /usr/local/myapp/src/manage.py celery worker --beat --schedule=/tmp/celerybeat-schedule-myapp --pidfile=/tmp/celerybeat-myapp.pid --loglevel=INFO

    /usr/local/myapp/src/manage.py celeryd -B --schedule=/tmp/celerybeat-schedule-myapp --pidfile=/tmp/celerybeat-myapp.pid --loglevel=INFO

    【讨论】:

    • 嘿@YoK - 你能帮帮我吗,我正在通过带有--beat和--schedule选项的celery multi运行celery beat,但是没有执行任何任务。我尝试用@app.periodic_taskCELERY_IMPORTS=("tasks",) 装饰任务,但没有成功。
    【解决方案2】:

    我们最近从 celery 4 升级到 celery 5

    显然-l 标志已被删除或重新命名?

    适用于 celery4,但不是 celery 5:

    celery -A pm -l info beat
    

    删除-l

    celery -A pm beat
    

    【讨论】:

      最近更新 更多