【发布时间】:2018-05-29 12:45:53
【问题描述】:
我有一个 python 龙卷风 websocket 处理程序,它工作得很好。但是,偶尔当使用 websocket 连接关闭选项卡时,它会引发我无法捕获的异常。这只发生在 Firefox 上,所以我怀疑这可能是一些内部错误。异常不会中断代码的执行,但我仍然希望能够捕获所有异常。
例外:
ERROR:asyncio:Future 异常从未被检索到 未来: 回溯(最近一次通话最后): 文件“C:\Users\user\Anaconda3\lib\site-packages\tornado\websocket.py”,第 808 行,在包装器中 产量期货 运行中的文件“C:\Users\user\Anaconda3\lib\site-packages\tornado\gen.py”,第 1099 行 价值 = 未来。结果() tornado.iostream.StreamClosedError:流已关闭
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次): 运行中的文件“C:\Users\user\Anaconda3\lib\site-packages\tornado\gen.py”,第 1107 行 产生 = self.gen.throw(*exc_info) 文件“C:\Users\user\Anaconda3\lib\site-packages\tornado\websocket.py”,第 810 行,在包装器中 引发 WebSocketClosedError() tornado.websocket.WebSocketClosedError
这里是 on_message 函数的代码:
async def on_message(self, message):
print(message)
while True:
try:
#print('ws_connections: ', self.ws_connection, self.ws_connection.stream.socket)
_fut = self.write_message(self.users[self].request_data())
except tornado.iostream.StreamClosedError as e:
print('StreamClosedError:', e)
break
except tornado.websocket.WebSocketClosedError as e:
print('WebSocketClosedError:', e)
break
except KeyError as e:
print('KeyError:', e)
break
await gen.sleep(1)
【问题讨论】:
标签: python exception-handling tornado