2016-03-23 51 views
1

假设有一个周期性任务计划每小时运行一次。工作人员接收任务并开始处理。当任务正在处理时,celeryd进程(通过supervisord进行控制)重新启动(supervisorctl全部重新启动)。即使该任务从未完成执行,它也不会被重新执行。如何在芹菜中终止周期性任务?

如何立即重新排列周期性任务并防止多个版本的任务同时运行?

回答

0

有可能是做一个更好的方式,但你可以只使用周期任务队列中创建一个常规的任务(例如,my_actual_task.defer(…)),这将直到它完成不从队列中删除(假设你正在使用acks_late)。

如果您不使用acks_late,可以尝试放置大量任务,并在相应finally处放置一个my_actual_task.retry()

无论哪种方式,你通常应该避免杀死工人,而不要让他们有机会完成他们正在做的事情。