重置Celery任务的倒计时

时间:2012-03-06 23:52:34

标签: django celery celery-task

我需要在倒计时后运行芹菜任务,但能够在某些条件下重置倒计时。例如,我想用apply_async调用countdown=15,但如果在执行任务之前发生了某些事件,我想将倒计时再次设置为15秒。

从文档和谷歌搜索我认为我可以通过保存任务ID,然后在事件发生时撤销并重新创建任务来完成此任务。我想知道是否有更优雅的方法。

2 个答案:

答案 0 :(得分:1)

您可以不撤销此任务并创建新任务,而不是设置倒计时吗?

答案 1 :(得分:0)

使用某些缓存(例如Redis)来存储一些锁定密钥。当你调用apply_async增加键值时。在celery中执行此任务时 - 减少此值。如果value为0 - 执行任务。因此,如果有两次apply_async调用,您的计数器将为2,并且将跳过第一次执行任务。

我认为this code can help you