在Celery中重新成功完成任务

时间:2015-06-21 15:04:20

标签: python mongodb rabbitmq celery

我有某种类型的任务,如果满足某个条件,我会在最初运行几分钟后刷新一些东西。

据我所知,由于任务请求(args,kwargs,priority ..)的信息未保存在任何地方,因此无法重新运行以前运行的任务。

我可以看到它出现在Flower中,但我认为这是因为它使用了Celery事件。

有没有办法实现我想要的?我可以添加一个保存请求信息的后任务挂钩,但这似乎有点过时了。

我使用RabbitMQ作为代理,使用MongoDB作为结果后端。

1 个答案:

答案 0 :(得分:0)

根据文档apply_async有一个cowntdown选项,允许您将执行延迟一定的秒数。 你可以做一个递归的任务:

@app.task
def my_task(an_arg):
    # do something
    my_task.apply_async(countdown=120, kwargs={"an_arg": an_arg})