我的团队使用Sentry
来跟踪错误,因此我宁愿不使用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
答案 0 :(得分:4)
我认为如果你声明一个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。