python - 在 Tornado 的 ioloop 中出现异常时启动 pdb

标签 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 捕获未捕获的异常并打印或记录它们。如果我安装上面的钩子(Hook),程序只有在按 Ctrl-C 时才会进入事后模式,这有点晚了。 :-)

有没有办法在不给 Tornado 打猴子补丁的情况下实现这一点?

最佳答案

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

不过,我想这与猴子补丁没有太大区别......

关于python - 在 Tornado 的 ioloop 中出现异常时启动 pdb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660657/

相关文章:

python - 生成大文件并发送

python - 使用 IPython 逐步调试

python - Python 3 有什么原因会执行一条语句两次吗?

python - 从 Python 启动一个可以解释函数和别名的 shell

python - 缩放的 QPixmap 看起来很糟糕

python - 将 Tornado 应用程序部署到 AWS Lambda 时出错

python - 来自模型的 django url

python - Django 。从查询集中删除 select_related

python - 防止对 Tornado 中的服务器文件进行直接文件访问