2014-10-29 7 views
2

我正在使用芹菜來處理一些任務。我可以看到有多少活動或計劃等,但我無法找到任何方式查看失敗的任務。 Flower確實顯示了狀態,但只有在任務啓動失敗時才運行。是否有任何命令來獲取所有失敗的任務(STATUS:FAILURE)?如何獲取Celery中的失敗任務?

創建任務時,我確實有任務ID。但有數百萬人。所以即使有辦法通過任務ID檢查,我也無法逐個檢查。但如果有這樣的命令,請讓我知道。

+0

難道你不能在重試任務之前將它記錄在某處嗎? – 2014-10-29 11:49:42

回答

1

task idstatestatus屬性。所以你可以通過id來獲得任務的狀態。

my_task_id = my_task.delay(foo) 
my_task_id.state 
my_task_id.status 

給出了它是暫停,開始,重試,失敗或成功的狀態。

afaik,芹菜只顯示活動,預定,保留,撤銷但id不顯示失敗的任務。

由於您擁有所有任務ID,因此您可以循環查看其狀態。

for task_id in task_id_list: 
    if task_id.state == 'FAILURE' 
     print(task_id) 
3

芹菜不會使它容易找到失敗的任務,但Flower(主芹菜管理Web應用程序),並簡化了這一點。即使完成任務ID,它也會記錄任務ID,並且具有一個API,可讓您只查找失敗的任務。

Flower的基本HTTP API包括/api/tasksendpoint - 您可以使用/api/tasks?state=FAILURE僅顯示失敗的任務,然後解析JSON以提取所需內容。內容類似於您在Web API得到什麼,並且很容易與原型和curl格式/過濾器jq

curl -s 'http://localhost:5555/api/tasks?state=FAILURE&limit=5' | jq . | less 

花需要安裝和運行過程。

由於您擁有數百萬個完成的任務,因此您可能需要在數據存儲中捕獲失敗的任務信息纔能有效訪問 - 也許Flower會提供幫助。或者您可以嘗試Celery中的自定義失敗處理程序來捕獲失敗的任務信息 - 請參閱this answer

相關問題