【发布时间】:2012-03-24 12:37:15
【问题描述】:
我需要在倒计时后运行 celery 任务,但能够在某些条件下重置倒计时。例如,我想用countdown=15调用apply_async,但是如果在任务执行之前发生了某些事件,我想再次将倒计时设置为15秒。
根据文档和谷歌搜索,我认为我可以通过保存任务 ID 来完成此操作,然后在事件发生时撤销并重新创建任务。我想知道是否有更优雅的方法。
【问题讨论】:
标签: django celery celery-task
我需要在倒计时后运行 celery 任务,但能够在某些条件下重置倒计时。例如,我想用countdown=15调用apply_async,但是如果在任务执行之前发生了某些事件,我想再次将倒计时设置为15秒。
根据文档和谷歌搜索,我认为我可以通过保存任务 ID 来完成此操作,然后在事件发生时撤销并重新创建任务。我想知道是否有更优雅的方法。
【问题讨论】:
标签: django celery celery-task
除了设置倒计时,你不能撤销这个任务并创建一个新任务吗?
【讨论】:
使用一些缓存,比如 Redis,来存储一些锁键。当您调用 apply_async 时,键的增量值。当你在 celery 中执行这个任务时 - 减少这个值。如果值为 0 - 执行任务。因此,如果有两次 apply_async 调用,您的计数器将为 2,并且将跳过第一次执行任务。
【讨论】: