我需要在倒计时后运行芹菜任务,但能够在某些条件下重置倒计时。例如,我想用apply_async
调用countdown=15
,但如果在执行任务之前发生了某些事件,我想将倒计时再次设置为15秒。
从文档和谷歌搜索我认为我可以通过保存任务ID,然后在事件发生时撤销并重新创建任务来完成此任务。我想知道是否有更优雅的方法。
答案 0 :(得分:1)
您可以不撤销此任务并创建新任务,而不是设置倒计时吗?
答案 1 :(得分:0)
使用某些缓存(例如Redis)来存储一些锁定密钥。当你调用apply_async增加键值时。在celery中执行此任务时 - 减少此值。如果value为0 - 执行任务。因此,如果有两次apply_async调用,您的计数器将为2,并且将跳过第一次执行任务。