Выбор ответа Senior FastAPI и Pydantic обновлено
BackgroundTasks или очередь задач
Вопрос
Нужно после оплаты сгенерировать PDF-счёт (20 секунд) и отправить его на почту, и это нельзя потерять. Что выбрать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Очередь задач (Celery, arq, Taskiq) с повторами. BackgroundTasks выполняются в том же процессе после ответа: при перезапуске или падении воркера задача пропадёт, ретраев нет, а тяжёлая работа отнимает ресурсы у запросов. createtask ещё хуже: задачу без ссылки может собрать сборщик мусора.
Варианты ответа
BackgroundTasksFastAPI: задача выполнится после ответаasyncio.create_taskв обработчике с сохранением ссылки- Очередь задач (Celery, arq, Taskiq) с повторамиправильный ответ
- Синхронно в обработчике до ответа, раз это нельзя потерять
Разбор
BackgroundTasks выполняются в том же процессе после ответа: при перезапуске или падении воркера задача пропадёт, ретраев нет, а тяжёлая работа отнимает ресурсы у запросов. create_task ещё хуже: задачу без ссылки может собрать сборщик мусора. Синхронно 20 секунд держать клиента нельзя. Очередь с брокером даёт надёжность, ретраи и отдельные воркеры. BackgroundTasks подходит для лёгкого и некритичного: записать лог, отправить метрику.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «FastAPI и Pydantic»
- Откуда в FastAPI ответ 422
- Разбор и проверка query-параметров
- Граф зависимостей с кешем на запрос
- Подмена зависимостей в тестах
- Сколько раз вызывается зависимость
- Эндпоинт FastAPI с моделью и зависимостью
- Откуда FastAPI берёт параметры
- Валидаторы Pydantic v2