我已经安排了每3小时运行一次带有芹菜节拍的任务:
'sync_stuff': {
'task': 'celery_tasks.sync_stuff',
'schedule': crontab(hour='*/3')
}
有时候完成任务需要超过3个小时,我想确保在旧实例仍在运行时,芹菜不会安排和再次运行任务。
有没有一种方法可以仅使用celery或celerybeat设置?
答案 0 :(得分:1)
不幸的是,您必须implement a locking strategy yourself。
阅读文档的此部分以获取更多详细信息:
像 cron 一样,如果第一个任务在下一个任务之前没有完成,则这些任务可能会重叠。如果您对此感到担忧,则应该使用锁定策略来确保一次只能运行一个实例(例如,请确保确保一次只能执行一个任务)。
来源:
http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html#cookbook-task-serial