Метод teardown_request
Метод teardown_request применяется к объекту
Blueprint и регистрирует функцию, которая будет
вызвана после завершения обработки запроса. В отличие
от метода after_request, функция
teardown_request вызывается всегда, даже если
обработчик запроса выбросил исключение. Первым
параметром функция принимает объект исключения
exception или None, если ошибки не было.
Метод возвращает декорированную функцию.
Синтаксис
@bp.teardown_request
def teardown_func(exception):
pass
Пример
Давайте создадим Blueprint и зарегистрируем функцию
teardown_request, которая выводит сообщение
после каждого запроса:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__)
@bp.teardown_request
def teardown_func(exception):
print('request finished')
@bp.route('/')
def index():
return 'hello'
app.register_blueprint(bp)
При обращении к адресу '/' в консоль будет
выведено сообщение:
"request finished"
Пример
Давайте проверим, что функция вызывается даже при возникновении исключения в обработчике:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__)
@bp.teardown_request
def teardown_func(exception):
if exception:
print('error:', exception)
else:
print('no errors')
@bp.route('/')
def index():
raise ValueError('something wrong')
app.register_blueprint(bp)
При обращении к адресу '/' в консоль будет
выведено сообщение об ошибке:
"error: something wrong"
Пример
Давайте используем teardown_request для
закрытия соединения с базой данных после каждого
запроса:
from flask import Flask, Blueprint
app = Flask(__name__)
bp = Blueprint('bp', __name__)
connections = []
@bp.before_request
def open_connection():
connections.append('connection')
@bp.teardown_request
def close_connection(exception):
if connections:
connections.pop()
print('connection closed')
@bp.route('/')
def index():
return 'hello'
app.register_blueprint(bp)
При обращении к адресу '/' в консоль будет
выведено сообщение:
"connection closed"
Смотрите также
-
метод
before_request,
который регистрирует функцию перед запросом -
метод
after_request,
который регистрирует функцию после запроса -
класс
Blueprint,
который создаёт blueprint приложения -
метод
errorhandler,
который регистрирует обработчик ошибок