首页 > 解决方案 > 在 django 中重启 celery 和 celery beat schedule 关系

问题描述

重新启动芹菜会导致所有周期性任务(芹菜节拍时间表)重置并从重新启动芹菜时开始,还是保留时间表?

例如,假设我有一个定期任务,每天下午 12 点执行。现在我在下午 3 点重新启动 celery。定期任务是否会重置为每天下午 3 点运行?

标签: djangocelerydjango-celery

解决方案


你如何设置你的任务?

这里有很多设置任务计划的方法 →</p>

  • 示例:每 30 秒运行一次 tasks.add 任务。
app.conf.beat_schedule = {
    'add-every-30-seconds': {
        'task': 'tasks.add',
        'schedule': 30.0,
        'args': (16, 16)
    },
}
app.conf.timezone = 'UTC'

此任务在启动后每 30 秒运行一次。

  • 另一个例子:
from celery.schedules import crontab

app.conf.beat_schedule = {
    # Executes every Monday morning at 7:30 a.m.
    'add-every-monday-morning': {
        'task': 'tasks.add',
        'schedule': crontab(hour=7, minute=30),
        'args': (16, 16),
    },
}

该任务每天 7:30 运行。

您可以查看时间表示例

所以答案取决于你的代码。


推荐阅读