Закрытие постоянного соединения (websocket) в fastapi
Сегодня познакомился с замечательным фреймворком fastapi, всё классно, сразу пишу сервер на нём, но есть один вопрос по нему. Касается он закрытия соединения. Сам код обработки соединений (из официальной документации):
@app.websocket("/ws/")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(data)
Всё работает, но если клиент закроет соединение, то выбрасывается исключение WebSocketDisconnect. Даже если соединение было закрыто правильно на стороне клиента: socket.close(). Не совсем понимаю зачем выбрасывать исключение? Ничего особенного не произошло, обычная операция на стороне, зачем выбрасывать traceback на весь терминал? Он же не выбрасывается например при отправке http и закрытии соединения, что тут случилось такого?)
В официальной документации предлагается обрабатывать это исключение с помощью try:... except:....
Понимаю, что логику никак не изменить, но интересно, насколько это здоровое решение делать так со стороны разработчиков или это нормальная практика?