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 を押すだけで事後分析モードに入りますが、これはちょっと遅いです。:-)

Tornado にモンキー パッチを適用せずにこれを実現する方法はありますか?

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 に答える