【发布时间】:2020-08-21 09:46:02
【问题描述】:
我正在处理 celery 计划任务,但遇到了问题。
假设有一个每 5 分钟运行一次的计划任务。
而且这个任务可以在我的一些 API 中手动执行,
我总是希望这个任务的间隔是 5 分钟。
例如,如果此任务在 8:00 自动执行,
在 8:01 我第二次执行了这个任务,
现在我想下次在 8:06 自动运行 Celery。
那么在 Celery 中有什么方法可以做到这一点吗?
【问题讨论】:
我正在处理 celery 计划任务,但遇到了问题。
假设有一个每 5 分钟运行一次的计划任务。
而且这个任务可以在我的一些 API 中手动执行,
我总是希望这个任务的间隔是 5 分钟。
例如,如果此任务在 8:00 自动执行,
在 8:01 我第二次执行了这个任务,
现在我想下次在 8:06 自动运行 Celery。
那么在 Celery 中有什么方法可以做到这一点吗?
【问题讨论】:
没有。它不是。 Celery beat(调度程序)将每 5 分钟运行一次任务。如果你手动触发一个任务,它会被执行并且可能在一段时间内与调度器执行的任务并行运行。
您可以做的是,通过使用分布式锁来防止任务并行运行,如果您需要的话。
或者,您可以编写自己的具有此功能的调度程序。
【讨论】: