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 设置来做到这一点?
不幸的是,您必须自己实施锁定策略。
阅读文档的这一部分以获取更多详细信息:
与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