我想用芹菜来执行一项周期性任务 根据文档:http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries,我写下了以下代码:
app.conf.beat_schedule = {
'test_celery': {
'task': 'tasks.login.test_timertask',
'schedule': 60.0,
}
}
但是当我按如下方式运行时:
celery beat -A tasks.login --loglevel=info
第一项任务在60年代后执行。
我希望一旦工人开始而不是延迟60秒就开始任务。我该怎么办?
答案 0 :(得分:1)
您可以使用crontab schedules:
from celery.schedules import crontab
app.conf.beat_schedule = {
'test_celery': {
'task': 'tasks.login.test_timertask',
'schedule': crontab(), # default, executes every minute
}
}
但您必须了解以下内容(如文档所述):
也存在类似Crontab的计划,请参阅Crontab schedules.
部分与cron一样,如果第一个任务没有,任务可能会重叠 在下一个之前完成。如果这是一个问题,你应该使用锁定 确保一次只能运行一个实例的策略(参见 例如Ensuring a task is only executed one at a time)。