Для простого best-effort действия подходит BackgroundTasks, но важное регистрационное письмо лучше отправлять через долговечную очередь и worker. multiprocessing не решает надёжность доставки.
[имя] спрашивает, в FastAPI после регистрации пользователя нужно отправить письмо, не блокируя HTTP-ответ. Какое решение выберете и почему не multiprocessing?
Для простого best-effort действия подходит BackgroundTasks, но важное регистрационное письмо лучше отправлять через долговечную очередь и worker. multiprocessing не решает надёжность доставки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для простого best-effort действия подходит BackgroundTasks, но важное регистрационное письмо лучше отправлять через долговечную очередь и worker. multiprocessing не решает надёжность доставки.
BackgroundTasks выполняет работу после отправки HTTP-ответа, но задача остаётся связанной с жизнью процесса: при его падении она может потеряться. Для гарантируемого продолжения сохраните задание вместе с регистрацией через outbox, затем отправляйте с ограниченными повторами и дедупликацией. Почта в основном I/O-bound; создание отдельного процесса на запрос добавляет накладные расходы и сложности управления. Независимый worker полезен не ради обхода GIL, а ради управляемого жизненного цикла, восстановления и наблюдаемости.
Источник: fastapi.tiangolo.com.