8

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

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

4

2 回答 2

1

除了设置倒计时,你不能撤销这个任务并创建一个新任务吗?

于 2012-11-25T01:47:04.590 回答
0

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

我认为这段代码可以帮助你

于 2015-04-03T10:43:47.203 回答