<b>Starlette ломают не роуты, а мелкие привычки вокруг ASGI</b>
Starlette часто берут как «лёгкий фундамент» для FastAPI и своих микросервисов. И именно там всплывают типовые ошибки: смешивают слой HTTP и бизнес-логику, тащат тяжёлые зависимости в middleware, а потом удивляются, почему приложение стало вязким.
На что смотреть сразу:
— middleware оставляйте для кросс-сечных вещей: auth, trace id, headers, логирование;
— в endpoints не держите долгие sync-операции, иначе блокируется event loop;
— для фоновых задач не полагайтесь на «авось» — выносите их в отдельный воркер или очередь;
— WebSocket и обычный HTTP лучше проектировать как разные сценарии, а не один универсальный хендлер.
Ещё одна частая проблема — ошибки обработки исключений. В Starlette удобно ловить всё через handlers, но если складывать туда бизнес-исключения вперемешку с системными, быстро теряется прозрачность. Разделяйте: одно место для доменных ошибок, другое — для неожиданных падений и 500.
И главное: держите приложение маленьким по границам ответственности. Starlette хорош там, где маршрут тонкий, зависимости явные, а жизненный цикл запроса не превращён в комбайн. Тогда фреймворк остаётся быстрым, предсказуемым и не требует героизма при поддержке.
Python Web & Scripts — Django, FastAPI, скрипты
@python_web_scripts
<b>Starlette ломают не роуты, а мелкие привычки вокруг ASGI</b>
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.