Событие request_started
Событие request_started относится к сигналам Flask и посылается
в самом начале обработки запроса, когда Flask уже создал контекст
запроса, но ещё не начал вызывать функцию-обработчик. Сигнал
применяется для подключения функций-подписчиков через метод
connect. В качестве параметра подписчик получает объект
sender, соответствующий приложению Flask. Событие удобно
использовать для логирования, замера времени обработки или
инициализации ресурсов перед выполнением запроса.
Синтаксис
from flask import request_started
request_started.connect(function, sender)
Пример
Давайте подключим подписчика к событию request_started
и выведем сообщение в момент старта запроса:
from flask import Flask, request_started
app = Flask(__name__)
def on_request_started(sender, **extra):
print('request started')
request_started.connect(on_request_started, app)
@app.route('/')
def index():
return 'hello'
Результат выполнения кода при обращении к адресу '/':
"request started"
Пример
Давайте сохраним время старта запроса в глобальной переменной, чтобы затем вычислить длительность обработки:
import time
from flask import Flask, request_started
app = Flask(__name__)
start_time = {}
def on_request_started(sender, **extra):
start_time['value'] = time.time()
request_started.connect(on_request_started, app)
@app.route('/')
def index():
elapsed = time.time() - start_time['value']
return str(elapsed)
Результат выполнения кода для адреса '/':
0.000123
Смотрите также
-
класс
Signal,
который представляет собой сигнал Flask -
метод
connect,
который подключает подписчика к сигналу -
событие
request_finished,
которое срабатывает после завершения обработки запроса -
событие
got_request_exception,
которое срабатывает при возникновении исключения в запросе