1

在独立的 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 时才会进入事后模式,这有点晚了。:-)

有没有办法在没有猴子修补龙卷风的情况下实现这一目标?

4

1 回答 1

1

您可以继承 tornado 的 IOLoop 并覆盖 handle_callback_exception。见http://www.tornadoweb.org/en/stable/ioloop.html#tornado.ioloop.IOLoop.handle_callback_exception

我想这与猴子修补没有太大区别,虽然......

于 2013-12-18T15:23:41.567 回答