Атрибут reason
Атрибут reason принадлежит классу
WebSocketException и хранит строку
с описанием причины, по которой сервер закрывает
WebSocket-соединение. Значение передаётся
вторым параметром при создании исключения
и попадает в кадр закрытия соединения вместе
с кодом из атрибута code.
Если причина не указана, атрибут хранит
пустую строку. Атрибут доступен только для чтения
и используется клиентом для понимания того,
почему сервер разорвал соединение.
Синтаксис
exception.reason
Пример
Давайте создадим исключение WebSocketException
с кодом 1008 и причиной 'policy violation'
и выведем значение атрибута reason:
from fastapi import FastAPI, WebSocket, WebSocketException
app = FastAPI()
@app.websocket('/ws')
async def ws_endpoint(websocket: WebSocket):
await websocket.accept()
exc = WebSocketException(code=1008, reason='policy violation')
print(exc.reason)
await websocket.close(code=exc.code, reason=exc.reason)
Результат выполнения кода:
"policy violation"
Пример
Давайте выбросим исключение WebSocketException
с причиной 'user' и перехватим его,
чтобы прочитать атрибут reason:
Результат выполнения кода:
"user"
Смотрите также
-
класс
WebSocketException,
который представляет исключение для WebSocket-соединения -
атрибут
code,
который хранит код закрытия WebSocket-соединения -
класс
WebSocketDisconnect,
который возникает при разрыве соединения клиентом -
класс
WebSocketRequestValidationError,
который возникает при ошибке валидации данных WebSocket