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

Starlette ломают не роуты, а то, как с ней обращаются в middleware и стримах

Starlette ломают не роуты, а то, как с ней обращаются в middleware и стримах

Starlette часто берут как «лёгкий ASGI-слой», а потом удивляются: приложение работает, но сложнее отлаживать ошибки, фоновые задачи и пропущенные заголовки. Есть наблюдение которое стоит проверить: большинство проблем появляется не в endpoint’ах, а на границах запроса.

• Middleware держите короткими. Если в одном слое и auth, и логирование, и нормализация ответа — дебаг превращается в квест.
• Для тяжёлых операций не блокируйте event loop: выносите CPU-bound в отдельный процесс, а I/O — в асинхронные вызовы.
• Стриминг ответа тестируйте отдельно. Любая ошибка после первого чанка уже не «обычный 500», а частично отправленный ответ.

Ещё два места, где Starlette часто недооценивают: lifespan и state. Инициализация соединений, пулов и кэшей должна жить в startup/shutdown, а не в первом запросе. Если нужен общий объект между слоями, не прячьте его в глобалы — прокидывайте через request.state или контейнер зависимостей.

Если проект маленький, Starlette даёт чистую базу без лишней магии. Если проект растёт — заранее фиксируйте границы middleware, lifecycle и async-IO. Потом это экономит часы, а не минуты.
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.
tech

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

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

start

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

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

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