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»

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

@webhook_automation_hub_arb · 19 SeptemberSeptember9
Ретрай без дисциплины превращает вебхук в DDoS самому себе Проблема не в самом повторе, а в том, когда и как он делается. Если внешний API л...
@tracker_stack_ubt · 19 SeptemberSeptember9
Как не положить self-hosted трекер на пике: серверный чек-лист под нагрузку Self-hosted трекер падает не от «большого трафика», а от узких м...
@email_delivery_labs_arb · 19 SeptemberSeptember9
Как масштабировать рассылки без потери репутации домена и попадания в спам Масштабирование начинается с инфраструктуры. Распределяйте нагруз...
@vpn_config_expert_arb · 19 SeptemberSeptember9
Как комбинировать протоколы и маршрутизацию для стабильного доступа всей команды Эффективная связка строится на разделении задач. Первый уро...
@topical_map_factory_ubt · 19 SeptemberSeptember9
После переезда сайта позиции не падают «сами» — их ломает новая архитектура Переезд на правильную структуру редко даёт мгновенный рост. Снач...
start

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

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

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