【发布时间】:2012-12-12 17:43:13
【问题描述】:
我从 Celery(与 Django 集成)开始。
我想安排一个任务,每 5 分钟一次。这个任务可以有一个参数,它是最后一个任务执行的结果(它作为一个上下文)。
我找到了如何链接和安排任务,但我找不到为下一个任务提供此“上下文”的正确方法。
抱歉,如果我遗漏了 Celery 文档中的某些内容..
感谢您的帮助, 阿诺。
【问题讨论】:
我从 Celery(与 Django 集成)开始。
我想安排一个任务,每 5 分钟一次。这个任务可以有一个参数,它是最后一个任务执行的结果(它作为一个上下文)。
我找到了如何链接和安排任务,但我找不到为下一个任务提供此“上下文”的正确方法。
抱歉,如果我遗漏了 Celery 文档中的某些内容..
感谢您的帮助, 阿诺。
【问题讨论】:
我认为最好使用一些持久性存储来解决这个问题。但是你可以使用 eta 或 countdown parameters 在 celery 中运行延迟任务:
ETA(预计到达时间)可让您设置特定日期和 执行任务的最早时间。 倒计时是将 eta 设置为未来几秒的快捷方式。
【讨论】:
我实现了 alex vasi 的解决方案。
首先,我尝试为每个任务使用相同的 id,但有时,该任务无法检索到最后一个结果。
我转向回调方式,所以每次我的任务结束时,我都会使用正确的 ETA 开始另一个任务,并将最后一个结果作为参数传递。 效果很好。
对于错误处理,我在task_failure signal 上附加了一个方法。
【讨论】: