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

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

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

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

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

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

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

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

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

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

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

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

Все подборки
  • Python17 126
  • Облачные технологии14 083
  • QA вакансии3 456
  • Backend вакансии2 115
  • Инженер данных1 809
  • Продакт-менеджер1 261

Разработка

  • Android1 862
  • iOS1 700
  • Fullstack вакансии986
  • AI вакансии950
  • Frontend вакансии744
  • Mobile вакансии44

По стеку

  • Go8 688
  • Java6 537
  • Node.js2 026
  • .NET1 722
  • Kotlin1 611
  • Rust1 458
  • C#710
  • PHP682
  • C++571

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

  • Kubernetes7 772
  • DevOps вакансии6 054
  • Linux-инфраструктура5 493
  • Terraform / IaC4 275
  • CI/CD3 239
  • Мониторинг и Observability1 790
  • SRE568
  • Кибербезопасность458

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

  • Data Scientist1 143
  • Бизнес-аналитик923
  • Аналитик данных857
  • Системный аналитик152

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

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

По регионам

  • Вакансии в США44 276
  • Вакансии в Европе23 819
  • Вакансии в Канаде4 471
  • Работа в России3 904

По формату

  • Удалённые вакансии74 928
  • Релокация в США44 273
  • Гибридная работа12 388
  • Офисная работа7 083

По уровню

  • Senior вакансии42 625
  • Middle вакансии20 854
  • Junior вакансии6 721

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

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab137 вакансий
  • Celonis39 вакансий
  • Spotify37 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 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

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

  • Fullstack-разработчик (Middle+ / Senior)
  • Fullstack-разработчик
  • Propulsion Software Engineer (Falcon Engineering)
  • Senior Engineering Manager, Co-Intelligent Coaching
  • AI Automation Architect