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

Атрибут background

Атрибут background применяется к объекту ответа класса Response и хранит объект BackgroundTasks или любую другую задачу, которая должна выполниться после того, как ответ уже отправлен клиенту. По умолчанию атрибут равен None. Чаще всего он заполняется автоматически, когда обработчик маршрута принимает параметр типа BackgroundTasks.

Синтаксис

response.background

Пример

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

from fastapi import FastAPI from fastapi.responses import JSONResponse from starlette.background import BackgroundTask app = FastAPI() def write_log(message: str): with open('log.txt', 'a') as f: f.write(message + '\n') @app.get('/') def index(): task = BackgroundTask(write_log, 'page visited') res = JSONResponse( content={'text': 'hello'}, background=task ) return res

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

{"text": "hello"}

После отправки ответа в файл log.txt будет добавлена строка page visited.

Пример

Давайте проверим значение атрибута background у ответа, созданного без фоновой задачи:

<+python+> from fastapi import FastAPI from fastapi.responses import JSONResponse app = FastAPI() @app.get('/') def index(): res = JSONResponse(content={'text': 'hello'}) return {'background': str(res.background)} <-python+>

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

{"background": "None"}

Пример

Давайте воспользуемся параметром BackgroundTasks в обработчике маршрута, чтобы FastAPI сам заполнил атрибут background ответа:

from fastapi import FastAPI, BackgroundTasks app = FastAPI() def send_email(email: str): print(f'email sent to {email}') @app.get('/user/{email}') def user(email: str, tasks: BackgroundTasks): tasks.add_task(send_email, email) return {'email': email}

Результат выполнения кода для адреса /user/user@abcde:

{"email": "user@abcde"}

После отправки ответа будет вызвана функция send_email и в консоль выведется строка email sent to user@abcde.

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

  • класс Response,
    который является базовым классом для всех ответов
  • атрибут status_code,
    который хранит HTTP-код состояния ответа
  • атрибут headers,
    который хранит заголовки ответа
  • атрибут body,
    который хранит тело ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить