РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
250 of 643 menu

Метод 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,
    который регистрирует обработчик ошибок
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить