2014-04-09 60 views
5

第二個編輯:有點挖後,這個問題從如何與局部變量如何防止芹菜從發送這並不第二日誌信息記錄異常改變有局部變量。在下面的嘗試後,我實際上發現我總是收到2封電子郵件,其中一封是本地變量,另一封沒有。如何防止重複異常記錄從芹菜任務

首先編輯:我已經成功地排序得到的局部變量,通過添加自定義ON_FAILURE倍率(使用annotations像這樣所有任務:

def include_f_locals(self, exc, task_id, args, kwargs, einfo): 
    import logging 
    logger = logging.getLogger('celery') 
    logger.error(exc, exc_info=einfo) 

CELERY_ANNOTATIONS = {'*': {'on_failure': include_f_locals}} 

但現在的問題是,錯誤到達3次,一次通過芹菜記錄儀,並通過根兩次(雖然我沒有在傳播我的日誌記錄設置「芹菜」記錄儀)

原題: 我有一個Django /芹菜項目Wh是ich我最近添加了一個哨兵處理程序作爲根級別「錯誤」的記錄器。這對於django中發生的大多數錯誤和異常都適用,除了來自芹菜工作者的錯誤和異常。

會發生什麼情況是哨兵收到跟蹤和守護程序本地的異常,但不包括堆棧中每個幀的f_locals(本地變量)。這些確實出現在正常的python/django例外中。

我想我可以嘗試捕獲所有異常並手動記錄exc_info。但這並不理想。

回答

0

有趣的是,當我簡單地將raven升級到5.0之後的版本(特別是在5.1之後)時,所有的麻煩都消失了。

雖然我不知道它的變化引起的異常將(與f_locals在哨兵正確顯示)正常登錄,但事實仍然是烏鴉< 5.0並沒有爲我工作。

此外,沒有必要做任何花哨的CELERY_ANNOTATIONS legwork(如上),只需定義正確的記錄器的哨兵處理程序似乎足以捕獲異常,以及其他日誌記錄級別的消息。

+0

查看有關日誌堆棧本地和重複日誌的相關問題[這裏](https://github.com/getsentry/raven-python/issues/427) – tutuDajuju