Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+666новых вакансий за сутки·52 265вакансий открыто сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 686
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 394 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python5 973
  • Облачные технологии4 523
  • QA вакансии1 689
  • Android1 143
  • Инженер данных788
  • Продакт-менеджер308

Разработка

  • iOS1 093
  • Backend вакансии1 020
  • Fullstack вакансии448
  • AI вакансии378
  • Frontend вакансии369
  • Mobile вакансии27

По стеку

  • Go3 345
  • Java2 037
  • Kotlin908
  • Node.js746
  • Rust492
  • .NET481
  • PHP278
  • C++213
  • C#199

DevOps и инфраструктура

  • Kubernetes2 562
  • Linux-инфраструктура2 030
  • DevOps вакансии1 855
  • Terraform / IaC1 548
  • CI/CD876
  • Мониторинг и Observability709
  • SRE229
  • Кибербезопасность40

Аналитика и данные

  • Аналитик данных479
  • Data Scientist443
  • Бизнес-аналитик342
  • Системный аналитик50

Другие направления

  • Проджект-менеджер107
  • UI/UX дизайн70
  • Ручное тестирование14

По регионам

  • Вакансии в США24 039
  • Вакансии в Европе9 373
  • Работа в России2 968
  • Вакансии в Канаде2 114

По формату

  • Удалённые вакансии41 595
  • Релокация в США24 039
  • Гибридная работа5 209
  • Офисная работа3 834

По уровню

  • Senior вакансии22 591
  • Middle вакансии12 174
  • Junior вакансии4 013

Сейчас нанимают

Все компании
  • Rakuten189 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Wise81 вакансия
  • Infobip28 вакансий
  • Darktrace17 вакансий
  • Spotify17 вакансий
  • Celonis14 вакансий
  • UiPath13 вакансий
  • Adyen9 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме FastAPIВсе вопросы
FastAPIMiddleКодинг

Что такое фоновые задачи (background tasks) в FastAPI и когда их следует использовать?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

BackgroundTasks в FastAPI позволяет запустить функцию после отправки ответа клиенту, не блокируя его ожидание; подходит для лёгких задач (email, аудит), но не заменяет очередь задач типа ARQ или Celery.

Базовый пример

import logging
from fastapi import FastAPI, BackgroundTasks
from pydantic import BaseModel, EmailStr

app = FastAPI()
log = logging.getLogger(__name__)

def send_welcome_email(email: str, username: str) -> None:
    # Синхронная функция — FastAPI выполнит её в ThreadPoolExecutor
    log.info("Sending welcome email to %s", email)
    # ... вызов SMTP или Resend API ...

class UserCreate(BaseModel):
    email: EmailStr
    username: str

@app.post("/users", status_code=201)
async def create_user(
    body: UserCreate,
    background_tasks: BackgroundTasks,
):
    # Сохраняем пользователя в БД (здесь опущено для краткости)
    background_tasks.add_task(send_welcome_email, body.email, body.username)
    return {"id": 42, "username": body.username}

Механизм работы

BackgroundTasks — класс из fastapi, реализованный поверх starlette.background.BackgroundTasks. FastAPI внедряет его через DI: достаточно добавить параметр типа BackgroundTasks в сигнатуру обработчика. Задача добавляется методом background_tasks.add_task(func, *args, **kwargs) и выполняется после того, как ответ отправлен клиенту — в том же процессе и том же event loop (для async-функций) или в пуле потоков (для sync-функций).

Async-вариант

import httpx
from fastapi import FastAPI, BackgroundTasks

app = FastAPI()

async def notify_webhook(url: str, payload: dict) -> None:
    async with httpx.AsyncClient() as client:
        await client.post(url, json=payload, timeout=10.0)

@app.post("/events")
async def publish_event(
    payload: dict,
    background_tasks: BackgroundTasks,
):
    background_tasks.add_task(notify_webhook, "https://hooks.example.com", payload)
    return {"status": "accepted"}

Когда использовать BackgroundTasks

  • Отправка email или push-уведомления после регистрации/заказа.
  • Запись в audit log, когда задержка ответа нежелательна.
  • Инвалидация кэша или обновление счётчиков, не требующее транзакции.
  • Лёгкие webhook-уведомления во внешние системы.

Когда BackgroundTasks недостаточно

BackgroundTasks выполняется в том же процессе. Если процесс завершится (crash, deploy), задача будет потеряна. Для надёжной доставки, повторных попыток и мониторинга используйте очередь задач: ARQ (asyncio + Redis), Celery (с broker Redis или RabbitMQ), RQ.

# Пример с ARQ вместо BackgroundTasks для надёжной доставки
import arq
from fastapi import FastAPI

app = FastAPI()

@app.post("/orders", status_code=201)
async def create_order(body: dict, redis: arq.ArqRedis):
    order_id = 99  # сохранить в БД
    await redis.enqueue_job("send_order_confirmation", order_id=order_id)
    return {"id": order_id}

Подводные камни

  • Потеря задачи при сбое процесса. BackgroundTasks не персистентны — если Uvicorn упадёт, задача не выполнится и не будет повторена.
  • Исключения не доходят до клиента. Ошибка в фоновой задаче логируется, но не влияет на HTTP-ответ; нужно явно настроить обработку ошибок (try/except + logging).
  • Shared state и DB-сессии. Нельзя использовать SQLAlchemy-сессию, созданную в обработчике, внутри фоновой задачи — она может быть закрыта к моменту выполнения. Создавайте новую сессию внутри задачи.
  • Нет контроля конкурентности. При высокой нагрузке множество фоновых задач выполняются одновременно без ограничений; для ограничения используйте Semaphore или выносите задачи в worker.
  • Нет retry-логики. BackgroundTasks не поддерживает повторные попытки при ошибке сети или SMTP; реализуйте её вручную или переходите на ARQ/Celery.
  • Тестирование. В тестах с TestClient фоновые задачи выполняются синхронно до возврата из вызова; с AsyncClient (httpx) — тоже, но это поведение не задокументировано и может измениться.
  • Зависимости недоступны. Параметры с Depends() не передаются в функцию задачи автоматически — нужно явно передавать нужные объекты через аргументы add_task.

Частые вопросы на собеседовании

  • Как FastAPI использует Pydantic-модели для валидации запросов и ответов?
  • Как интегрировать SQLAlchemy с FastAPI для работы с базой данных?
  • Как реализовать аутентификацию через OAuth2 и JWT-токены в FastAPI?
  • Что такое ASGI и чем FastAPI/Uvicorn отличается от WSGI-серверов?

Типичные ошибки

  • Описывать background tasks только как термин и не показывать механизм на минимальном примере.
  • Игнорировать ошибки, пустые данные, конкурентный доступ или границы транзакции.
  • Не связывать поведение с официальным контрактом FastAPI и реальной эксплуатацией.

Что проверяет интервьюер

  • Объясняет background tasks через последовательность действий, а не через набор ключевых слов.
  • Приводит короткий кодовый пример или production-сценарий с ожидаемым поведением.
  • Называет хотя бы один риск: производительность, безопасность, транзакции, память или сопровождение.

Как вы знаете этот вопрос?

Проверить себя по теме FastAPI →

Источники

  • https://fastapi.tiangolo.com/tutorial/background-tasks/

Связанные темы

FastAPIapi-designimplementationtechnical-reasoning

Вакансии с этим навыком

  • Junior Fullstack-разработчик (AI-assisted development)
  • Principal Fullstack Developer
  • AI Engineer / Python Developer
  • Full Stack Engineer (Python / Java & Angular)
  • Python Developer (AI Agents)