我有某种类型的任务,如果满足某个条件,我会在最初运行几分钟后刷新一些东西。
据我所知,由于任务请求(args,kwargs,priority ..)的信息未保存在任何地方,因此无法重新运行以前运行的任务。
我可以看到它出现在Flower中,但我认为这是因为它使用了Celery事件。
有没有办法实现我想要的?我可以添加一个保存请求信息的后任务挂钩,但这似乎有点过时了。
我使用RabbitMQ作为代理,使用MongoDB作为结果后端。
答案 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})