Python Web & Scripts — Django, FastAPI, скрипты

FastAPI ломают не роуты, а границы между схемой, логикой и БД

FastAPI ломают не роуты, а границы между схемой, логикой и БД

За неделю в репах: один и тот же набор проблем повторяется почти в каждом сервисе на FastAPI. Путь красивый, а внутри handler делает всё сразу: валидирует, ходит в БД, собирает ответ, ловит исключения. Такой код быстро растёт, а потом любое изменение превращается в цепочку правок по всему проекту.

Рабочая схема проще:
— router принимает запрос и отдаёт его в сервис;
— service держит бизнес-логику;
— repository/DAO прячет SQLAlchemy, Redis или внешнее API;
— pydantic-схемы отвечают только за контракт входа и выхода.

Есть наблюдение которое стоит проверить: если в endpoint больше 20-30 строк, он уже просит разбиения. Второй красный флаг — когда тест на один маршрут требует поднять половину приложения. Это обычно значит, что зависимости зашиты не через DI, а напрямую.

Не смешивайте async и blocking без явного контроля. Любой requests, тяжелый файл-IO или CPU-задача внутри async-обработчика может убить конкурентность. Для таких мест нужен отдельный поток, воркер или вынос в очередь. И ещё: не тащите ORM-модели наружу как response_model, если потом придётся объяснять, почему утекли лишние поля.

В FastAPI лучше всего живут тонкие роуты, явные схемы и сервисы, которые можно тестировать без HTTP.
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.