У меня есть обработчик веб-сокетов python tornado, который работает просто отлично.Тем не менее, время от времени, когда вкладка закрыта с подключением к websocket, он выдает исключения, которые я не могу поймать.Это происходит только с Firefox, поэтому я подозреваю, что это может быть внутренняя ошибка.Исключение не прерывает выполнение кода, но я все еще хочу иметь возможность перехватывать все исключения.
Исключения:
ОШИБКА: asyncio: исключение будущего никогда не получалось. Future: Traceback (большинствопоследний вызов последним): Файл "C: \ Users \ user \ Anaconda3 \ lib \ site" (C: \ Users \ user \ Anaconda3 \ lib \ site-packages \ tornado \ websocket.py ", строка 808)-packages \ tornado \ gen.py ", строка 1099, в run value = future.result () tornado.iostream.StreamClosedError: Поток закрыт
Во время обработки вышеупомянутого исключения произошло еще одно исключение:
Traceback (последний вызов был последним): файл "C: \ Users \ user \ Anaconda3 \ lib \ site-packages \ tornado \ gen.py", строка 1107, в запуске yielded = self.gen.throw (*exc_info) Файл "C: \ Users \ user \ Anaconda3 \ lib \ site-packages \ tornado \ websocket.py", строка 810, в оболочке поднятьВот код для функции 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)