Python Web & Scripts — Django, FastAPI, скрипты
Starlette ломают не роуты, а мелкие ошибки в ASGI-границах
Starlette часто берут как «лёгкий каркас», а потом удивляются странным багам под нагрузкой. За неделю в репах обычно всплывают одни и те же места: request body читают дважды, фоновые задачи начинают жить своей жизнью, middleware меняет поведение ответа уже после отправки.
Проверьте базовый набор:
— не читайте stream/body в разных слоях без явного кеша;
— не держите тяжёлую логику в middleware, если она может быть зависимостью или endpoint-ом;
— не смешивайте sync-код с async без понятного границами вызова;
— для долгих операций выносите работу в очередь, а не в response cycle.
Ещё одна частая проблема — обработка исключений. Если вы ловите всё подряд и возвращаете «красивый» 200, отладка превращается в археологию. Лучше явно разделять: валидация, ожидаемые доменные ошибки, и настоящий 500 с логом и trace-id.
Если Starlette кажется капризным, обычно каприз не в нём, а в том, что в приложении не определены границы ответственности. Держите transport, бизнес-логику и фоновые задачи раздельно — и каркас перестаёт удивлять.
2 ·