2015-08-21 54 views
0

目前我們在應用程序中使用了大量的芹菜任務,我們有一個例外可能會引發大量任務。用於芹菜任務的中間件

我們可以在每個任務中創建一個try和catch塊,並相應地處理這個特定的異常,但我正在尋找一種方法來捕獲任何異常(如中間件行)以便於維護。

任何人都可以建議嗎?

我們使用以下版本:

celery==3.1.18 
django-celery==3.1.16 
Django==1.6.5 

回答

1

這可以通過使用一個抽象基任務處理程序來完成。特殊情況下,有一個on_failure處理程序。

from celery import Task 

class MyBaseTask(Task): 
    abstract = True 

    def on_failure(self, exc, task_id, args, kwargs, einfo): 
     # Task failed. What do you want to do? 
     print('Task raised an exception: {}'.format(exc) 

@app.task(base=MyBaseTask) 
def my_task(): 
    # Your task code 

查看可用的處理程序的更多信息芹菜文檔並傳遞給每一個論點:http://docs.celeryproject.org/en/latest/userguide/tasks.html#abstract-classes