首页 > 解决方案 > 捕获 Twisted “延迟中未处理的错误:”但它在其他人的代码中

问题描述

我正在使用其他人的模块来处理监听 websocket。

作为我测试的一部分,我发现模拟的互联网中断(通过禁用/启用我的互联网适配器)会导致 twisted.deferred 抛出一个错误,该错误不会被我的异常处理捕获。它似乎只是打印错误消息,而不是传递它?

问题是我无法让它优雅地处理它(例如,在它备份时继续检查互联网连接并恢复进程)。

无论如何我可以“倾听”这些错误并自己捕获它们,还是我需要爬树并重新编码其他人的工作?

我还使用信号模块来捕获“收到的键盘中断信号”以手动停止执行(为简洁起见未显示)。

conn.start()

while True:
    try:
        time.sleep(1)
    except Exception as err:
        # Stop streams and logging gracefully
        Print('Some other Exception received: ' + err)
        conn.close()
        user_log.close()
        sys.exit(0)

标签: python-3.xdeferredtwisted.internet

解决方案


推荐阅读