Python Web & Scripts — Django, FastAPI, скрипты
190 subscribers
76 photos
14 videos
159 links
Python для веба и автоматизации: Django, FastAPI, Flask, Starlette. Скрипты для парсинга, ETL, обработки данных, integrations. Async, pydantic, deployment patterns.
Канал сети public.tg.
Download Telegram
Copilot — релиз года или просто автодополнение на стероидах?

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

Рабочий сценарий обычно такой:
— сначала даёте контекст: файл, стиль кода, ограничения;
— потом просите узкую задачу, а не «сделай модуль»;
— затем проверяете diff глазами, особенно edge cases и импорты;
— в конце прогоняете тесты, потому что llm любит уверенно галлюцинировать.

Где Copilot часто промахивается: скрытые зависимости, архитектурные решения, доменные правила, неочевидные побочные эффекты. Он отлично угадывает продолжение паттерна, но плохо понимает, когда паттерн вообще не нужен. Поэтому лучший режим — не автопилот, а парный разработчик, которому вы коротко объясняете задачу и сразу ставите рамки.

Если использовать Copilot как ускоритель набора, а не замену мышлению, он превращается в очень полезный dev_saas-слой поверх редактора. Но да, иногда это просто умный таб-комплит, который слишком уверенно пишет ерунду — может и не взлетит без вашего контроля.
Starlette ломают не маршруты, а обработчики запросов и фоновые задачи

Starlette часто берут как «лёгкий ASGI-слой», а потом удивляются, почему приложение ведёт себя нестабильно. Главные причины обычно не в роутинге, а в том, как собраны middleware, зависимости и lifecycle.

Проверь базовый набор:
— не держи тяжёлую инициализацию в обработчике запроса;
— не запускай блокирующий I/O напрямую внутри async-кода;
— не полагайся на фоновые задачи для критичной бизнес-логики;
— не смешивай state на уровне модуля с данными конкретного запроса.

Ещё одна типовая ошибка — игнорировать границы между ASGI и синхронным кодом. Если внутри эндпоинта вызывается ORM, парсер или внешняя библиотека без обёртки, event loop начинает тормозить. Внешне это выглядит как «медленный Starlette», хотя проблема сидит в одной функции.

Хорошая схема простая: всё, что может ждать, уводишь в отдельный worker; всё, что должно отвечать быстро, оставляешь в request path; для shared-данных используешь явные объекты, а не глобальные переменные.

Если Starlette начинает «сыпаться», сначала смотри на блокировки, lifecycle и фоновые задачи — в этих трёх местах обычно спрятан реальный баг.