Событие appcontext_pushed
Событие appcontext_pushed относится к сигналам
Flask и срабатывает в момент, когда контекст приложения
помещается в стек. Это происходит при вызове
app.app_context с последующим использованием
менеджера контекста или при обработке запроса, когда
Flask автоматически создаёт контекст приложения.
Сигнал не принимает обязательных параметров, но
подписчики могут получить доступ к объекту приложения
через глобальный прокси current_app.
Синтаксис
from flask import appcontext_pushed
appcontext_pushed.connect(receiver)
Пример
Давайте подпишемся на сигнал appcontext_pushed
и выведем сообщение при каждом помещении контекста
в стек:
from flask import Flask, appcontext_pushed, current_app
app = Flask(__name__)
def handler(sender, **extra):
print('appcontext pushed:', sender.name)
appcontext_pushed.connect(handler, app)
with app.app_context():
print('inside context:', current_app.name)
Результат выполнения кода:
"appcontext pushed: app"
"inside context: app"
Пример
Давайте сохраним данные в g при срабатывании
сигнала, чтобы они были доступны внутри контекста
приложения:
from flask import Flask, appcontext_pushed, g
app = Flask(__name__)
def set_user(sender, **extra):
g.user = 'abcde'
appcontext_pushed.connect(set_user, app)
with app.app_context():
print(g.user)
Результат выполнения кода:
"abcde"
Смотрите также
-
событие
appcontext_popped,
которое срабатывает при извлечении контекста приложения из стека -
событие
appcontext_tearing_down,
которое срабатывает при разрушении контекста приложения -
метод
connect,
который подключает получателя к сигналу -
класс
Signal,
который представляет собой объект сигнала