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

Starlette ломают не маршруты, а мелкие ошибки вокруг ASGI

Starlette ломают не маршруты, а мелкие ошибки вокруг ASGI

Starlette часто берут как «лёгкий слой» над ASGI, но в проде проблемы обычно не в фреймворке, а в обвязке. Если приложение внезапно ведёт себя странно, проверьте базовые вещи: middleware, порядок роутинга, работу с `BackgroundTask` и то, как вы отдаёте ответы.

Три места, где чаще всего прячется баг:
— middleware, который меняет `request.state` или заголовки не там, где нужно;
— конфликт маршрутов, когда более общий путь перехватывает более конкретный;
— фоновые задачи, которые делают тяжёлую работу и блокируют цикл событий.

Отдельно смотрите на async-границы. Если внутри handler’а вызывается синхронный код, Starlette не спасёт: запросы начнут копиться, а latency поползёт вверх. Для CPU-bound и блокирующих I/O выносите работу в очередь, thread pool или отдельный сервис. Для простых ответов держите handler коротким и предсказуемым.

Ещё одна типовая ошибка — смешивать ответственность роутов и бизнес-логики. В Starlette удобно быстро собрать прототип, но если handler начинает валидировать, ходить в БД, форматировать ответ и писать логи в одном месте, отлаживать это потом больно. Разносите слои сразу: роут, сервис, адаптер.

Если держать приложение коротким на уровне ASGI и не тащить блокировки в handler’ы, Starlette остаётся очень удобной основой для веба и скриптов.
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.
tech

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

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

start

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

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

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