我从 Celery(与 Django 集成)开始。
我想安排一个任务,每 5 分钟一次。该任务可以有一个参数,该参数是最后一个任务执行结果(它充当上下文)。
我找到了如何链接和安排任务,但我找不到将这个“上下文”提供给下一个任务的正确方法。
抱歉,如果我错过了 Celery 文档中的某些内容..
谢谢你的帮助,阿诺。
我认为最好使用一些持久性存储来解决这个问题。eta
但是您可以使用或countdown
参数在 celery 中运行延迟任务:
ETA(预计到达时间)允许您设置一个特定的日期和时间,这是您的任务将执行的最早时间。倒计时是将 eta 设置为未来几秒的快捷方式。
我实施了亚历克斯瓦西的解决方案。
首先,我尝试为每个任务使用相同的 id,但有时,该任务无法检索到最后一个结果。
我转向回调方式,所以每次我的任务结束时,我都会使用正确的 ETA 开始另一个任务,并将最后一个结果作为参数传递。它工作得很好。
对于错误处理,我在task_failure 信号上附加了一个方法。