我正在编写一个包装器来运行MrJob作业,并且它工作得很好但是我希望能够在作业抛出异常时从作业中提供Python堆栈跟踪。最初,当出现问题时(即作业代码中的assert
失败)我得到了mrjob异常,这没有用。
在Google Groups thread上,我找到了功能set_up_logging()
,效果非常好。我用它如下:
linecount_job = LineCount(args=['-r', 'hadoop', target_filename])
linecount_job.set_up_logging(stream=sys.stdout)
with linecount_job.make_runner() as runner:
...
并将一堆反馈(包括作业中的Python堆栈跟踪)转储到stdout
。
有没有办法只捕获堆栈跟踪(目标是在Web应用程序中显示它)?我现在的计划是将数据写入看起来的内容,就像堆栈跟踪一样,这很难看,但可能会有效。
我还担心我根本无法找到此功能的文档。好像它应该是here。这个功能是否已被弃用?有没有更好的方法去做我正在做的事情?