Вопрос: как перейти на FastAPI и что учитывать? - Академия Selectel

Вопрос: как перейти на FastAPI и что учитывать?

Линия поддержки
Линия поддержки Ответы на вопросы пользователей
30 января 2026

Узнайте, как правильно перейти с Flask на FastAPI, настроить асинхронную работу и подготовить сервер к высоким нагрузкам в продакшене.

Изображение записи

Комментарий пользователя

Здравствуйте! Планируем в команде заменить Flask на FastAPI для новых сервисов. Какие есть подводные камни и как выстроить async-обработку?

Марат Козубаев Пользователь

Ответ специалиста

Добрый день, Марат! FastAPI работет быстро благодаря ассинхроности, но нужно понимать: не весь код должен быть async. 

Если у вас тяжелые CPU-операции или старые библиотеки без ассинхронного режима, то вынесите их в фоновые процессы или используйте отдельные потоки. 

Для HTTP-серверов запускайте FastAPI под Uvicorn/Gunicorn. Если говорить чуть подробнее, то:

  • Uvicorn — это скоростной «двигатель», который понимает современный асинхронный код.
  • Gunicorn — это менеджер проекта, который запускает несколько копий вашего приложения (воркеров). 

Такая связка нужна, чтобы, даже если один воркер занят тяжелой задачей или заглючил, остальные продолжали отвечать пользователям, и сайт не падал. Используйте:

  • Игнатий Царев

    Игнатий Царев

    Младший бэкенд-разработчик Python

uvicorn.workers.UvicornWorker или gunicorn -k uvicorn.workers.UvicornWorker.

Простой пример endpoint:


      from fastapi import FastAPI
import httpx
app = FastAPI()
@app.get("/proxy")
async def proxy(q: str):
    async with httpx.AsyncClient(timeout=5.0) as client:
        r = await client.get("https://api.example.com/search", params={"q": q})
        r.raise_for_status()
        return r.json()

Не используйте в асинхронных функциях код, — который заставляет программу ждать. Если ваша база данных не поддерживает асинхронность, запускайте ее через asyncio.to_thread/run_in_executor или переходите на асинхронные драйверы типа asyncpg. Для стабильной работы настройте connection pool (готовый набор соединений с базой), установите лимиты по времени и количеству запросов, а также включите сжатие данных.

В плане безопасности всегда проверяйте входящие данные через Pydantic, ограничьте размер запросов и частоту обращений, чтобы сервер не перегрузили. Настройте правила доступа CORS и думаю HTTPS даже говорить не нужно. В конце протестируйте сервер под нагрузкой, чтобы правильно рассчитать количество рабочих воркеров под мощность вашего процессора.

Присоединяйтесь к нашему сообществу и развивайтесь вместе с нами.