IOLoop add_timeout回调函数中出现异常

2024-04-23 06:51:24 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我用

ioloop.IOLoop.instance().add_timeout(time, callback_func)

但是我的callback_func可能会抛出我想要捕捉的Exception。在

尝试了this answer中建议的方法,但似乎不起作用。或者我做得不对。任何帮助都会很好。在

代码如下:

开始.py

class Start:
    # ... other methods ...
    @staticmethod
    def initialize():
        OtherClass.initialize()

def main():
    Start.initialize()

if __name__ == "__main__":
    main()

ioloop.IOLoop.instance().start()

其他_类.py

^{pr2}$

Tags: instancepyaddtimemaindefcallbacktimeout
1条回答
网友
1楼 · 发布于 2024-04-23 06:51:24

如果callback_func是您自己的代码,那么到目前为止,捕获所有异常的最简单方法是将整个函数体包装在try/except中:

@staticmethod
def callback_func():
    try:
        # ... your code ...
    except Exception as exc:
        # handle it

它很简单,每个读过你的代码的人都会理解它,这并不奇怪。在

如果您想做一些异国情调和龙卷风特有的事情,请使用ExceptionStackContext:

^{pr2}$

最重要的是,使用协同程序而不是回调。协同程序与回调一样有效,但是提供了常规的Python异常处理语义。请参阅我的文章Refactoring Tornado CoroutinesTornado guide。在

相关问题 更多 >