如何不开始相同的任务并等待芹菜节拍完成

Iva*_*iev 7 python celery celerybeat

我有 celery beat 的计划任务每​​ 3 小时运行一次:

'sync_stuff': {
    'task': 'celery_tasks.sync_stuff',
    'schedule': crontab(hour='*/3')
}
Run Code Online (Sandbox Code Playgroud)

有时完成任务需要超过 3 个小时,我想确保 celery 不会在旧实例仍在运行时再次安排和运行任务。

有没有办法只用 celery 或 celerybeat 设置来做到这一点?

sas*_*uds 5

不幸的是,您必须自己实施锁定策略

阅读文档的这一部分以获取更多详细信息:

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