2016-11-16 4 views
1

私のチームはSentryを使用してエラーを追跡しています。そのため、すべてのレポートを1か所にまとめておくために、ルイージの内蔵メール機能を使用したくないです。LuigiパイプラインエラーをSentryにルーティングできますか?

これは私がそれが現在設定されている方法であり、それは完全に歩哨を飛ばしているようだ:

if __name__ == '__main__': 
    try: 
     luigi.run() 
    except Exception as e: 
     client = Client(
      *** 
     ) 
     client.captureException(tags={ 
      sys.argv[0] 
     }) 
     logger.critical('Error occurred: {e}'.format(e=e)) 
     raise 

答えて

2

私はそれはあなたがcallback to the failure eventを宣言する場合に可能とそこに見張り追跡ものを行うべきだと思う。

import luigi 

@luigi.Task.event_handler(luigi.Event.FAILURE) 
def mourn_failure(task, exception): 
    client = Client(
     *** 
    ) 
    # we also include extra context for the current task 
    client.captureException(
     (type(e), e.message, e.traceback), 
     extra=dict(task=repr(task)) 
    ) 
    logger.critical('Error occurred: {e}'.format(e=exception)) 


if __name__ == '__main__': 
    luigi.run() 

e.tracebackだけのpython 3+ as explained in this answer上で動作することに注意してください

関連する問題