在独立的Python程序中执行此操作通常很有用:
def excepthook(typ, value, tb):
traceback.print_exception(typ, value, tb)
pdb.pm()
...
if log.getEffectiveLevel() == logging.DEBUG:
sys.excepthook = excepthook
(即如果发生未捕获的异常,程序将被放入pdb
验尸方式)
但这不适用于Tornado ioloop bc似乎ioloop捕获未捕获的异常并打印或记录它们。如果我安装了上面的钩子,程序只有在按下Ctrl-C时才进入事后模式。 : - )
有没有办法在没有猴子修补龙卷风的情况下实现这一目标?
答案 0 :(得分:1)
您可以继承龙卷风的IOLoop并覆盖handle_callback_exception。见http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.IOLoop.handle_callback_exception
我想这与猴子修补没什么不同,但是......