Событие appcontext_popped
Событие appcontext_popped относится к сигналам
Flask и срабатывает в момент, когда контекст
приложения удаляется. Это происходит после
завершения обработки запроса или при явном
выходе из блока with app.app_context.
Сигнал позволяет выполнить очистку ресурсов,
связанных с контекстом приложения.
Событие не принимает обязательных параметров,
кроме стандартного аргумента sender, который
передаётся всем сигналам Flask. Через
sender можно получить объект приложения,
инициировавшего событие.
Синтаксис
from flask import appcontext_popped
appcontext_popped.connect(receiver, sender=None)
Пример
Давайте подключим обработчик к событию
appcontext_popped и выведем сообщение при
удалении контекста приложения:
from flask import Flask, appcontext_popped
app = Flask(__name__)
def on_appcontext_popped(sender):
print('app context popped')
appcontext_popped.connect(on_appcontext_popped, app)
with app.app_context():
pass
Результат выполнения кода:
"app context popped"
Пример
Давайте посмотрим, как событие срабатывает после обработки запроса. Контекст приложения создаётся автоматически при запросе и удаляется по его завершении:
from flask import Flask, appcontext_popped
app = Flask(__name__)
def on_appcontext_popped(sender):
print('context removed')
appcontext_popped.connect(on_appcontext_popped, app)
@app.route('/')
def index():
return 'hello'
Результат выполнения кода при обращении
к адресу /:
"context removed"
Пример
Давайте используем декоратор connected_to
для подключения обработчика к событию
appcontext_popped:
from flask import Flask, appcontext_popped
app = Flask(__name__)
@appcontext_popped.connect_via(app)
def on_appcontext_popped(sender):
print('popped via decorator')
with app.app_context():
pass
Результат выполнения кода:
"popped via decorator"
Смотрите также
-
событие
appcontext_pushed,
которое срабатывает при создании контекста приложения -
событие
appcontext_tearing_down,
которое срабатывает при разрушении контекста приложения -
метод
connect,
который подключает обработчик к сигналу -
класс
Signal,
который представляет собой сигнал во Flask