【问题标题】:is it possible to manually restart celery task是否可以手动重启芹菜任务
【发布时间】:2016-05-02 03:56:53
【问题描述】:

我正在使用 celery 3 与 django 和 Flower 来监控任务。

有什么办法可以解决

  1. 我的任务失败
  2. 然后我在代码中做一些修复
  3. 然后我获取任务 ID,然后重新启动该任务

有没有可能

甚至可以手动将任何失败的任务放在另一个队列中,以便在修复它的原因后再次处理它

【问题讨论】:

  • 您可以重新启动整个 celery,但不能重新启动单个任务(任务只是队列中的一个项目),但是您可以在需要时重新安排任务,您可以查看操作方法这里celery.readthedocs.io/en/3.0/reference/celery.task.html
  • @trinchet 但我无法事先决定何时重新安排它。假设有我的错误代码导致任务失败。我认为修复了我的代码,然后我想重试该任务

标签: python django celery


【解决方案1】:

有点小技巧,但对我有用的是创建一个具有相同任务 ID 的新任务实例。例如,ID 为“abc”的任务运行并失败。然后我通过运行“重新启动”任务:

my_task.apply_async(args=('whatever'), task_id='abc')

实际上,它与其说是“重新启动”,不如说是对原始任务结果的替换,但它完成了工作。在这里绝对愿意接受更好的建议,因为它确实感觉有点笨拙。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2020-04-25
    • 2011-01-18
    • 2016-08-18
    • 1970-01-01
    • 2016-06-22
    • 2016-02-21
    相关资源
    最近更新 更多