我想使用芹菜执行定期任务。
根据文档: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秒延迟,我想开始任务。我该怎么办?
您可以使用crontab时间表:
from celery.schedules import crontab
app.conf.beat_schedule = {
'test_celery': {
'task': 'tasks.login.test_timertask',
'schedule': crontab(), # default, executes every minute
}
}
但是您必须意识到以下(如文档状态(:
也存在类似crontab的时间表,请参阅crontab上的部分 时间表。
喜欢用cron,如果第一个任务没有 在下一个之前完成。如果这是一个问题,您应该使用锁定 确保仅一个实例可以运行的策略(请参阅 示例确保仅执行任务(。