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

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

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

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

• Startup/shutdown лучше держать для инициализации клиентов, пулов и кешей. Не делайте там тяжёлую бизнес-логику: при падении инициализации приложение должно падать сразу, а не «жить полуживым».
• Middleware ставьте от внешнего к внутреннему по смыслу: логирование, трейсинг, авторизация, потом уже доменная обработка. Иначе отладка превращается в угадайку.
• Для JSON и стриминга используйте разные Response-классы. Если всё завернуть в один универсальный ответ, легко потерять заголовки, кеширование или корректную передачу тела.

Есть наблюдение которое стоит проверить: большинство багов в Starlette появляются не в endpoint-функциях, а на границе — где вы читаете request body, прокидываете state и смешиваете sync/async.

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

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

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

start

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

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

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