【问题标题】:Celery : schedule a task which use the last execution resultCelery : 调度一个使用最后执行结果的任务
【发布时间】:2012-12-12 17:43:13
【问题描述】:

我从 Celery(与 Django 集成)开始。

我想安排一个任务,每 5 分钟一次。这个任务可以有一个参数,它是最后一个任务执行的结果(它作为一个上下文)。

我找到了如何链接和安排任务,但我找不到为下一个任务提供此“上下文”的正确方法。

抱歉,如果我遗漏了 Celery 文档中的某些内容..

感谢您的帮助, 阿诺。

【问题讨论】:

    标签: python celery


    【解决方案1】:

    我认为最好使用一些持久性存储来解决这个问题。但是你可以使用 etacountdown parameters 在 celery 中运行延迟任务:

    ETA(预计到达时间)可让您设置特定日期和 执行任务的最早时间。 倒计时是将 eta 设置为未来几秒的快捷方式。

    【讨论】:

    • 嗨,亚历克斯,感谢您的回答。目前,我正在使用 Redis DB 来存储结果。你认为它是持久的吗?我了解 eta/倒计时,但我看不到如何从下一个任务中检索最后一个结果?感谢您的帮助。
    • @arnaud.breton 我的想法是将结果作为参数发送给任务。计算完成后,只需将计算结果安排在任务内部即可。当然使用存储(例如 Redis)和周期性任务会更可靠。
    【解决方案2】:

    我实现了 alex vasi 的解决方案。

    首先,我尝试为每个任务使用相同的 id,但有时,该任务无法检索到最后一个结果。

    我转向回调方式,所以每次我的任务结束时,我都会使用正确的 ETA 开始另一个任务,并将最后一个结果作为参数传递。 效果很好。

    对于错误处理,我在task_failure signal 上附加了一个方法。

    【讨论】:

      猜你喜欢
      • 2019-05-25
      • 2019-11-24
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      • 2020-12-26
      • 2015-10-28
      • 1970-01-01
      • 2013-12-22
      相关资源
      最近更新 更多