重置芹菜任务的倒计时
Posted
技术标签:
【中文标题】重置芹菜任务的倒计时【英文标题】:Reset countdown on Celery task 【发布时间】:2012-03-24 12:37:15 【问题描述】:我需要在倒计时后运行 celery 任务,但能够在某些条件下重置倒计时。例如,我想用countdown=15
调用apply_async
,但是如果在任务执行之前发生了某些事件,我想再次将倒计时设置为15秒。
根据文档和谷歌搜索,我认为我可以通过保存任务 ID 来完成此操作,然后在事件发生时撤销并重新创建任务。我想知道是否有更优雅的方法。
【问题讨论】:
【参考方案1】:除了设置倒计时,你不能撤销这个任务并创建一个新任务吗?
【讨论】:
嗯,正如我所说,这是我在阅读文档后想出的,但当时感觉不对,所以我想知道是否有其他方法。【参考方案2】:使用一些缓存,比如 Redis,来存储一些锁键。当您调用 apply_async 时,键的增量值。当你在 celery 中执行这个任务时 - 减少这个值。如果值为 0 - 执行任务。因此,如果有两次 apply_async 调用,您的计数器将为 2,并且将跳过第一次执行任务。
我认为this code can help you。
【讨论】:
以上是关于重置芹菜任务的倒计时的主要内容,如果未能解决你的问题,请参考以下文章