Закрытие постоянного соединения (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:....

Понимаю, что логику никак не изменить, но интересно, насколько это здоровое решение делать так со стороны разработчиков или это нормальная практика?


Ответы (0 шт):