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

Класс BackgroundTasks

Класс BackgroundTasks применяется для выполнения задач после того, как FastAPI отправит ответ клиенту. Это полезно для операций, которые не должны задерживать ответ: отправка email, запись логов, обработка данных. Объект класса передаётся в параметр обработчика, а задачи добавляются методом add_task.

Синтаксис

from fastapi import BackgroundTasks def handler(background_tasks: BackgroundTasks): background_tasks.add_task(func, *args, **kwargs)

Пример

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

<+python+> from fastapi import FastAPI, BackgroundTasks app = FastAPI() def write_log(message: str): with open('log.txt', 'a') as f: f.write(message + '\n') @app.get('/') def index(background_tasks: BackgroundTasks): background_tasks.add_task(write_log, 'page visited') return {'text': 'hello'} <-python+>

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

{"text": "hello"}

Пример

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

<+python+> from fastapi import FastAPI, BackgroundTasks app = FastAPI() def send_email(to: str, subject: str, body: str): print(f'Email to {to}: {subject} - {body}') @app.post('/user') def create_user(name: str, background_tasks: BackgroundTasks): background_tasks.add_task( send_email, 'user@example.com', 'Welcome', f'Hello, {name}!' ) return {'name': name} <-python+>

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

{"name": "abcde"}

Пример

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

<+python+> from fastapi import FastAPI, BackgroundTasks app = FastAPI() def task_one(): print('task one') def task_two(): print('task two') @app.get('/tasks') def run_tasks(background_tasks: BackgroundTasks): background_tasks.add_task(task_one) background_tasks.add_task(task_two) return {'status': 'scheduled'} <-python+>

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

{"status": "scheduled"}

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

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