2015-06-21 89 views
1

我有一些特定类型的任务,如果某个条件得到满足,它会在最初运行几分钟后执行某些操作。在Celery中重新执行成功的任务

就我所见,没有办法重新运行以前运行的任务,因为有关任务请求的信息(args,kwargs,priority ..)没有保存在任何地方。

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

有什么方法可以完成我想要的吗?我可以添加一个保存请求信息的post-task钩子,但这似乎有点不合适。

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

回答

0

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

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

也许我的问题不清楚。我不知道我甚至需要重新运行任务,直到稍后(在一些外部输入之后) – KimiNewt

相关问题