2015-06-21 87 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

相關問題