Исключение ClientDisconnected
Исключение ClientDisconnected относится к секции
exc и наследуется от класса
HTTPException.
Оно выбрасывается в момент, когда Flask пытается
прочитать тело запроса или записать ответ, но клиент
уже закрыл соединение. Это часто случается при
долгих запросах, когда пользователь закрывает
вкладку браузера или обрывается сеть. Исключение
не имеет собственных параметров, но наследует
атрибуты code, name и description
от родительского класса.
Синтаксис
from werkzeug.exceptions import ClientDisconnected
Пример
Давайте выбросим исключение ClientDisconnected
внутри обработчика и посмотрим на его атрибуты:
from flask import Flask
from werkzeug.exceptions import ClientDisconnected
app = Flask(__name__)
@app.route('/')
def index():
exc = ClientDisconnected()
return {
'code': exc.code,
'name': exc.name,
'description': exc.description
}
Результат выполнения кода:
{'code': 499, 'name': 'Client Disconnected', 'description': 'The client closed the connection before the response was sent.'}
Пример
Давайте обработаем исключение через
errorhandler и вернём клиенту понятный ответ:
from flask import Flask
from werkzeug.exceptions import ClientDisconnected
app = Flask(__name__)
@app.errorhandler(ClientDisconnected)
def handle_disconnect(exc):
return 'client disconnected', 499
@app.route('/')
def index():
raise ClientDisconnected()
Результат выполнения кода для адреса /:
client disconnected
Смотрите также
-
класс
HTTPException,
от которого наследуется ClientDisconnected -
атрибут
code,
который хранит HTTP-код ошибки -
атрибут
description,
который хранит описание ошибки -
исключение
RequestTimeout,
которое выбрасывается при превышении времени ожидания