2012-07-02 20 views
2

大廈:硬超時使用芹菜對這個問題的Django

Django Celery Time Limit Exceeded?

我有可能了一段時間運行一些任務。但是,大多數任務不應該花費幾秒鐘。我不想將全局超時設置爲考慮這些長時間運行的任務。相反,我想要一個短暫的全局硬時間限制,並手動調整我需要更長時間的任務。

當使用@task裝飾任務時,我執行了@task(timeout = None),但該任務仍然達到300秒的超時時間。我用task_function.delay(args)調用了任務。

有沒有辦法調用任務並自定義超時?

回答

3

This issue地址您可以使用自定義超時來調用任務的情況。它在issue802 branch中實施,但尚未掌握。您可以將它與主設備合併並使用所需的功能。

使用此修補程序,您可以在調用任務時傳遞超時。

tasks.add.apply_async(參數= [1,2],soft_timeout = 2,超時= 5)

2

你正在運行什麼版本的芹菜? current stable docs列表time_limit是設置任務超時的正確參數,如果沒有提供時間限制,則使用工作人員默認值。要設置任務的長期(如60分鐘)的超時時間,你可以使用:

@task(time_limit=3600) 
def mytask(): 
    ... 

或者,您可以使用apply_async更改時間限制,當你調用任務:

mytask.apply_async(time_limit=3600, args=args) 
+0

我試圖上述兩種的,並且在兩種情況下,全局設置重寫。我使用2.5.5 –