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

Функция copy_current_request_context

Функция copy_current_request_context применяется для сохранения контекста текущего HTTP-запроса. Она возвращает декоратор, который копирует объект запроса и привязывает его к переданной функции. Это позволяет обращаться к request, session или g внутри асинхронных задач или новых потоков, где контекст запроса по умолчанию недоступен.

Функция не принимает аргументов. Она должна вызываться внутри активного контекста запроса. Возвращённый декоратор применяется к функции, которая будет выполнена позже в другом потоке.

Синтаксис

from flask import copy_current_request_context @copy_current_request_context def func(): ...

Пример

Давайте скопируем контекст запроса и передадим его в новый поток, чтобы получить доступ к request внутри фоновой задачи:

from flask import Flask, request, copy_current_request_context import threading app = Flask(__name__) @app.route('/') def index(): @copy_current_request_context def background_task(): print('Path:', request.path) thread = threading.Thread(target=background_task) thread.start() thread.join() return 'hello'

Результат выполнения кода в консоли:

"Path: /"

Пример

Давайте сохраним данные из session и используем их в фоновой задаче после завершения запроса:

from flask import Flask, session, copy_current_request_context import threading app = Flask(__name__) app.secret_key = 'abcde' @app.route('/') def index(): session['user'] = 'article' @copy_current_request_context def background_task(): print('User:', session.get('user')) thread = threading.Thread(target=background_task) thread.start() thread.join() return 'hello'

Результат выполнения кода в консоли:

"User: article"

Смотрите также

  • функцию stream_with_context,
    которая сохраняет контекст при потоковой передаче
  • функцию after_this_request,
    которая выполняет код после текущего запроса
  • функцию make_response,
    которая создаёт объект ответа
  • функцию jsonify,
    которая формирует JSON-ответ
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить