cmc*_*ake 7 python django scheduling task celery
我有一个计划每 10 分钟运行一次的定期任务。有时此任务在 2-3 分钟内完成,有时需要 20 分钟。
如果上一个任务尚未完成,有没有办法使用celery beats 不打开任务?我在间隔设置中没有看到它的选项。
不,Celery Beat 对正在运行的任务一无所知。
实现您正在尝试做的事情的一种方法是将任务与其自身相关联。async_apply()中的示例具有可选的参数link和link_error其可被用来提供一个签名(它可以是一个单任务太)如果任务成功(链接)或不成功(link_error)结束运行。
我使用的是以下内容 - 我安排任务经常运行(比如每 5 分钟),并且我使用分布式锁来确保我始终只有一个任务实例正在运行。
最后提醒一下 - 您始终可以实现自己的调度程序,并在您的节拍配置中使用它。过去我曾考虑过为您想要的完全相同的东西执行此操作,但决定我已经拥有的解决方案对我来说已经足够了。