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

Метод add_task

Метод add_task применяется к экземпляру класса BackgroundTasks и регистрирует функцию, которая будет выполнена в фоне после того, как FastAPI отправит ответ клиенту. Первым параметром передаётся вызываемая функция, а далее - позиционные и именованные аргументы для неё. Это удобно для отправки писем, записи логов, обработки изображений и других задач, не требующих немедленного результата.

Синтаксис

background_tasks.add_task(func, *args, **kwargs)

Пример

Давайте добавим простую фоновую задачу, которая пишет сообщение в консоль:

from fastapi import FastAPI, BackgroundTasks app = FastAPI() def write_log(message: str): print(message) @app.get('/') def index(background_tasks: BackgroundTasks): background_tasks.add_task(write_log, 'hello') return {'text': 'article'}

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

{"text": "article"}

После отправки ответа в консоль выведется строка:

"hello"

Пример

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

from fastapi import FastAPI, BackgroundTasks app = FastAPI() def send_email(user: str, message: str, repeat: int = 1): for _ in range(repeat): print(f'{user}: {message}') @app.get('/notify/{user}') def notify(user: str, background_tasks: BackgroundTasks): background_tasks.add_task(send_email, user, 'abcde', repeat=2) return {'status': 'user'}

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

{"status": "user"}

После отправки ответа в консоль выведется:

"user: abcde" "user: abcde"

Пример

Давайте добавим несколько фоновых задач в одном обработчике:

from fastapi import FastAPI, BackgroundTasks app = FastAPI() def task_one(): print('hello') def task_two(): print('abcde') @app.get('/tasks') def tasks(background_tasks: BackgroundTasks): background_tasks.add_task(task_one) background_tasks.add_task(task_two) return {'status': 'article'}

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

{"status": "article"}

После отправки ответа в консоль выведется:

"hello" "abcde"

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

  • класс BackgroundTasks,
    который управляет выполнением фоновых задач
  • метод add_task,
    который добавляет функцию в очередь фоновых задач
  • метод BackgroundTasks,
    который позволяет выполнять задачи после ответа
  • метод add_task,
    который принимает аргументы для фоновой функции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить