在Tornado的ioloop中启动异常启动pdb

时间:2013-12-18 14:21:17

标签: python tornado pdb ipdb

在独立的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时才进入事后模式。 : - )

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

1 个答案:

答案 0 :(得分:1)

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

我想这与猴子修补没什么不同,但是......