Пять ошибок с pydantic, которые тихо ломают валидацию и API-контракты
Если pydantic в проекте уже есть, это ещё не значит, что данные проверяются так, как вы думаете. Чаще всего проблемы сидят не в самой схеме, а в том, как её используют в моделях, ручках и сервисных слоях.
— Не смешивайте входные и внутренние модели: для запроса и для хранения обычно нужны разные схемы. Иначе в API начинают торчать лишние поля или пропадают обязательные.
— Не полагайтесь на неявные преобразования. Строка в число, пустая строка в None, список из одного элемента — такие «помощники» потом сложно искать в багрепортах.
— Не забывайте про default_factory для изменяемых значений. Иначе один список или словарь может незаметно делиться между объектами.
— Не разбрасывайте валидаторы по проекту. Лучше держать правила рядом с полем, чтобы было понятно, где именно рождается ограничение.
Ещё одна частая ошибка — использовать модель как просто контейнер, а потом удивляться, что сериализация отдаёт не то, что ожидали. Если поле важно для контракта, задавайте его явно: тип, optional, alias, ограничения и поведение при отсутствии.
Хорошая привычка простая: сначала описать данные, потом проверить крайние случаи, и только потом подключать модель к обработчику. Тогда pydantic работает как страховка, а не как источник сюрпризов.
Если pydantic в проекте уже есть, это ещё не значит, что данные проверяются так, как вы думаете. Чаще всего проблемы сидят не в самой схеме, а в том, как её используют в моделях, ручках и сервисных слоях.
— Не смешивайте входные и внутренние модели: для запроса и для хранения обычно нужны разные схемы. Иначе в API начинают торчать лишние поля или пропадают обязательные.
— Не полагайтесь на неявные преобразования. Строка в число, пустая строка в None, список из одного элемента — такие «помощники» потом сложно искать в багрепортах.
— Не забывайте про default_factory для изменяемых значений. Иначе один список или словарь может незаметно делиться между объектами.
— Не разбрасывайте валидаторы по проекту. Лучше держать правила рядом с полем, чтобы было понятно, где именно рождается ограничение.
Ещё одна частая ошибка — использовать модель как просто контейнер, а потом удивляться, что сериализация отдаёт не то, что ожидали. Если поле важно для контракта, задавайте его явно: тип, optional, alias, ограничения и поведение при отсутствии.
Хорошая привычка простая: сначала описать данные, потом проверить крайние случаи, и только потом подключать модель к обработчику. Тогда pydantic работает как страховка, а не как источник сюрпризов.
Бот помог автору за 7 дней — но рядом уже психолог и врачебный анализ
Автор сделал
Для разработчиков Telegram-ботов это хороший холодный душ. Как только продукт лезет в самочувствие, психику или здоровье, это уже не просто диалоговый интерфейс поверх модели. Завтра в таком проекте стоит проверить минимум: согласие пользователя, хранение переписок, ручной контроль специалистом, понятный стоп-сценарий и текст, где бот не изображает врача.
Самый опасный баг здесь не в промпте, а в ощущении, что «личный пет-проект» не несёт продуктовой ответственности.
Автор сделал
@freefeeltrackerbot: пишет, что бот родился из личных потребностей и «помог за 7 дней». Отдельно утверждает, что Opus 3.8 может делать «серьезный врачебный анализ», а бота он прицепил к психологу, который параллельно всё контролирует.Для разработчиков Telegram-ботов это хороший холодный душ. Как только продукт лезет в самочувствие, психику или здоровье, это уже не просто диалоговый интерфейс поверх модели. Завтра в таком проекте стоит проверить минимум: согласие пользователя, хранение переписок, ручной контроль специалистом, понятный стоп-сценарий и текст, где бот не изображает врача.
Самый опасный баг здесь не в промпте, а в ощущении, что «личный пет-проект» не несёт продуктовой ответственности.
60% медиабаинговых команд стопорят кампании не из-за креатива, а из-за карт
По данным за 2023–2024 годы, проблемы с платежными картами и транзакциями называют главной причиной остановки рекламных кампаний. Facebook и Google уже занесли сотни тысяч BIN в черные списки; AdsCard на этом фоне продвигает массовые выплаты на карты World Wide и карты для покупок с Apple Pay / Google Pay.
Если вы пишете внутренний кабинет на Django/FastAPI для баинга, платежи нельзя оставлять «в бухгалтерском углу». Минимальный слой на завтра: хранить BIN/статус транзакции/провайдера, выносить выплаты в очередь, делать алерт на рост decline-rate и не привязывать бизнес-логику к одному эмитенту.
Иначе самый красивый парсер, автозалив и отчет в ClickHouse упрётся в банальный
По данным за 2023–2024 годы, проблемы с платежными картами и транзакциями называют главной причиной остановки рекламных кампаний. Facebook и Google уже занесли сотни тысяч BIN в черные списки; AdsCard на этом фоне продвигает массовые выплаты на карты World Wide и карты для покупок с Apple Pay / Google Pay.
Если вы пишете внутренний кабинет на Django/FastAPI для баинга, платежи нельзя оставлять «в бухгалтерском углу». Минимальный слой на завтра: хранить BIN/статус транзакции/провайдера, выносить выплаты в очередь, делать алерт на рост decline-rate и не привязывать бизнес-логику к одному эмитенту.
Иначе самый красивый парсер, автозалив и отчет в ClickHouse упрётся в банальный
payment_failed.This media is not supported in your browser
VIEW IN TELEGRAM
ByteDance анонсировала новую версию SeeDance версии 2.5
ByteDance готовит релиз Seedance 2.5 — видеогенератора нового уровня. Главное улучшение: модель сможет создавать 30-секундные видео за один прогон без склеек, вместо нынешних 15 секунд. Добавили локальный монтаж отдельных кадров, поддержку 3D-болванок для управления камерой, возможность использовать до 50 референсов и генерацию в 4К сразу. Закрытый бета-тест идёт сейчас, открытый релиз ожидается в начале июля. Технологически это шаг вперёд, но д…
➡️ Читайте на сайте: https://aff.top/blog/bytedance-anonsirovala-novuiu-versiiu-seedance-versii-2-5
🧠 Ещё больше инсайтов → в канале AFF.top
ByteDance готовит релиз Seedance 2.5 — видеогенератора нового уровня. Главное улучшение: модель сможет создавать 30-секундные видео за один прогон без склеек, вместо нынешних 15 секунд. Добавили локальный монтаж отдельных кадров, поддержку 3D-болванок для управления камерой, возможность использовать до 50 референсов и генерацию в 4К сразу. Закрытый бета-тест идёт сейчас, открытый релиз ожидается в начале июля. Технологически это шаг вперёд, но д…
➡️ Читайте на сайте: https://aff.top/blog/bytedance-anonsirovala-novuiu-versiiu-seedance-versii-2-5
🧠 Ещё больше инсайтов → в канале AFF.top
This media is not supported in your browser
VIEW IN TELEGRAM
Codex уничтожит твой SSD за год
Разработчик обнаружил критический баг в Codex CLI от OpenAI: агент непрерывно записывает логи в локальную SQLite-базу, перезаписывая за 21 день 37 ТБ данных. При таком темпе типичный SSD объёмом 1 ТБ (рассчитанный на 600 ТБ перезаписей) выходит из строя менее чем за год. OpenAI осведомлена о проблеме, но пока не исправляет её. Пользователям остаётся либо ждать обновления, либо переключиться на альтернативные CLI-инструменты без подобных недостат…
➡️ Читайте на сайте: https://aff.top/blog/codex-unichtozhit-tvoi-ssd-za-god
🧠 Ещё больше инсайтов → в канале AFF.top
Разработчик обнаружил критический баг в Codex CLI от OpenAI: агент непрерывно записывает логи в локальную SQLite-базу, перезаписывая за 21 день 37 ТБ данных. При таком темпе типичный SSD объёмом 1 ТБ (рассчитанный на 600 ТБ перезаписей) выходит из строя менее чем за год. OpenAI осведомлена о проблеме, но пока не исправляет её. Пользователям остаётся либо ждать обновления, либо переключиться на альтернативные CLI-инструменты без подобных недостат…
➡️ Читайте на сайте: https://aff.top/blog/codex-unichtozhit-tvoi-ssd-za-god
🧠 Ещё больше инсайтов → в канале AFF.top
Real Python обновил квиз по email в Python — там уже не только SMTP, но и вложения с HTML
В новом квизе по Sending Emails With Python предлагают проверить, как строить письма через
Для скриптов это полезная база без лишней магии: один и тот же шаблон можно использовать для уведомлений, отчётов, инвойсов и внутренних алертов. Если у вас письма до сих пор собираются вручную строками,
Если коротко: нормальный SMTP-пайплайн в Python лучше один раз собрать правильно, чем потом чинить MIME по ночам.
В новом квизе по Sending Emails With Python предлагают проверить, как строить письма через
EmailMessage, безопасно поднимать SMTP-соединение, отправлять HTML-альтернативы и прикладывать файлы.Для скриптов это полезная база без лишней магии: один и тот же шаблон можно использовать для уведомлений, отчётов, инвойсов и внутренних алертов. Если у вас письма до сих пор собираются вручную строками,
EmailMessage — хороший повод привести это в порядок до следующего продакшн-инцидента.Если коротко: нормальный SMTP-пайплайн в Python лучше один раз собрать правильно, чем потом чинить MIME по ночам.
Python-grammar без BNF читать трудно ровно до первого разбора
Real Python выпустил квиз по BNF Notation: Dive Deeper Into Python’s Grammar.
Внутри — как читать правила грамматики Python, отличать terminals от nonterminals и разбирать BNF-фрагменты из официальной документации.
Для скриптов это быстро окупается на синтаксисе и парсинге.
Для Django и FastAPI — помогает не гадать по примерам, а понимать, почему код валится именно на уровне грамматики.
Если вы когда-то открывали docs Python и закрывали их через минуту — вот тот редкий повод вернуться и дочитать.
Real Python выпустил квиз по BNF Notation: Dive Deeper Into Python’s Grammar.
Внутри — как читать правила грамматики Python, отличать terminals от nonterminals и разбирать BNF-фрагменты из официальной документации.
Для скриптов это быстро окупается на синтаксисе и парсинге.
Для Django и FastAPI — помогает не гадать по примерам, а понимать, почему код валится именно на уровне грамматики.
Если вы когда-то открывали docs Python и закрывали их через минуту — вот тот редкий повод вернуться и дочитать.
Python MCP-сервер в Cursor: tool calls уже можно показать на живом агенте
Real Python выпустил курс по Model Context Protocol: сначала ставят MCP, разбирают client-server архитектуру и базовые сущности — prompts, resources, tools.
Дальше собирают и тестируют Python MCP server, который ходит в e-commerce данные, в том числе через симулированную базу.
Для Python-веба это полезный шаблон не «про LLM вообще», а про нормальную интеграцию сервиса и агента.
Если у вас уже есть Django/FastAPI backend, такой MCP-слой можно использовать как отдельный интерфейс к данным и внутренним операциям.
Хороший повод руками проверить, где у вас API, а где уже нужен tool-call.
Интереснее всего здесь не модель, а граница между сервером и клиентом.
Real Python выпустил курс по Model Context Protocol: сначала ставят MCP, разбирают client-server архитектуру и базовые сущности — prompts, resources, tools.
Дальше собирают и тестируют Python MCP server, который ходит в e-commerce данные, в том числе через симулированную базу.
Для Python-веба это полезный шаблон не «про LLM вообще», а про нормальную интеграцию сервиса и агента.
Если у вас уже есть Django/FastAPI backend, такой MCP-слой можно использовать как отдельный интерфейс к данным и внутренним операциям.
Хороший повод руками проверить, где у вас API, а где уже нужен tool-call.
Интереснее всего здесь не модель, а граница между сервером и клиентом.
This media is not supported in your browser
VIEW IN TELEGRAM
Google ужесточает модерацию финансовой вертикали
Google ужесточает модерацию финансовых офферов в ЕС и ЕЭЗ, введя двухэтапную верификацию через G2 Risk Solutions и Google Ads. Проверка затронет 24 страны, включая Австрию, Польшу, Нидерланды и другие члены союза. На прохождение модерации отводится 30 дней — за это время некоторые связки успеют отработать до вступления требований в силу. Для арбитражников это означает необходимость подготовиться к усложнению процесса запуска финансовых кампаний …
➡️ Читайте на сайте: https://aff.top/blog/google-uzhestochaet-moderaciiu-finansovoi-vertikali
🧠 Ещё больше инсайтов → в канале AFF.top
Google ужесточает модерацию финансовых офферов в ЕС и ЕЭЗ, введя двухэтапную верификацию через G2 Risk Solutions и Google Ads. Проверка затронет 24 страны, включая Австрию, Польшу, Нидерланды и другие члены союза. На прохождение модерации отводится 30 дней — за это время некоторые связки успеют отработать до вступления требований в силу. Для арбитражников это означает необходимость подготовиться к усложнению процесса запуска финансовых кампаний …
➡️ Читайте на сайте: https://aff.top/blog/google-uzhestochaet-moderaciiu-finansovoi-vertikali
🧠 Ещё больше инсайтов → в канале AFF.top
Scrapy ломается не на парсинге, а на грязной логике очередей и дублей
В Scrapy чаще всего ошибаются не в selectors, а в архитектуре паука:
— ставят тяжёлый код в parse и тормозят весь crawl;
— не разделяют extraction и normalization;
— игнорируют повторные запросы и получают мусор в очереди;
— путают пагинацию с обходом связей и случайно уходят в бесконечный обход.
Держите простое правило: parse должен быстро извлечь данные, собрать Request и уйти дальше. Всё, что связано с очисткой строк, преобразованием дат, расчётом полей и записью в хранилище, лучше выносить в pipeline или отдельный слой сервиса. Так паук проще тестировать и легче масштабировать.
Ещё один частый провал — отсутствие контроля за дублями и статусами. Если сайт отдаёт одинаковые карточки под разными URL, нужен свой fingerprint-ключ или нормализация ссылки. Если часть страниц отвечает 403/429, не лечите это бесконечными ретраями: лучше ограничить глубину, настроить паузы и понять, какие запросы реально нужны.
Если Scrapy начинает «есть всё подряд», остановитесь и проверьте три вещи: схему обхода, фильтрацию URL и границу ответственности между пауком и обработкой данных. Тогда проект перестаёт быть набором костылей и становится обычным конвейером.
В Scrapy чаще всего ошибаются не в selectors, а в архитектуре паука:
— ставят тяжёлый код в parse и тормозят весь crawl;
— не разделяют extraction и normalization;
— игнорируют повторные запросы и получают мусор в очереди;
— путают пагинацию с обходом связей и случайно уходят в бесконечный обход.
Держите простое правило: parse должен быстро извлечь данные, собрать Request и уйти дальше. Всё, что связано с очисткой строк, преобразованием дат, расчётом полей и записью в хранилище, лучше выносить в pipeline или отдельный слой сервиса. Так паук проще тестировать и легче масштабировать.
Ещё один частый провал — отсутствие контроля за дублями и статусами. Если сайт отдаёт одинаковые карточки под разными URL, нужен свой fingerprint-ключ или нормализация ссылки. Если часть страниц отвечает 403/429, не лечите это бесконечными ретраями: лучше ограничить глубину, настроить паузы и понять, какие запросы реально нужны.
Если Scrapy начинает «есть всё подряд», остановитесь и проверьте три вещи: схему обхода, фильтрацию URL и границу ответственности между пауком и обработкой данных. Тогда проект перестаёт быть набором костылей и становится обычным конвейером.
Real Python выкатил 20-вопросный квиз по data structures — без выхода за базу
Вопросы проходят по strings, lists, tuples, dictionaries, sets, sorting и bytes.
Квиз собран вокруг core concepts из learning path по Python Data Structures, где сейчас 24 ресурса.
Для веб-разработки это полезно не как «тест на эрудицию», а как быстрый чек по тем местам, где чаще всего ломаются скрипты: сериализация, сортировка, мутации коллекций, работа с байтами.
Если в команде есть Django/FastAPI-сервисы, такой квиз удобно дать джуну перед ревью или прогнать самому перед рефакторингом утилит.
20 вопросов — нормальный формат, чтобы за 10 минут понять, где знания уже автоматические, а где ещё нужен гугл.
Вопросы проходят по strings, lists, tuples, dictionaries, sets, sorting и bytes.
Квиз собран вокруг core concepts из learning path по Python Data Structures, где сейчас 24 ресурса.
Для веб-разработки это полезно не как «тест на эрудицию», а как быстрый чек по тем местам, где чаще всего ломаются скрипты: сериализация, сортировка, мутации коллекций, работа с байтами.
Если в команде есть Django/FastAPI-сервисы, такой квиз удобно дать джуну перед ревью или прогнать самому перед рефакторингом утилит.
20 вопросов — нормальный формат, чтобы за 10 минут понять, где знания уже автоматические, а где ещё нужен гугл.
Один scatter-плот в Python закрывает и отчёт, и отладку — если докрутить s, c и alpha
Matplotlib делает scatter-плоты через
Перед этим сам Matplotlib нужно установить.
Важный практический момент для веба и скриптов: у
Для простых графиков
Если у вас Django/FastAPI-проект с генерацией графиков по данным из БД или ETL, это базовый инструмент, который быстро превращает сырые массивы в читаемую визуализацию.
Matplotlib делает scatter-плоты через
plt.scatter(): два array-like набора для x и y, и точек уже можно насыпать на график. Перед этим сам Matplotlib нужно установить.
Важный практический момент для веба и скриптов: у
scatter() есть точечная настройка размера, цвета, формы и прозрачности через s, c, marker и alpha. Для простых графиков
plt.plot() с marker-аргументами может работать быстрее, но когда нужно размечать группы, аномалии или статус записей по цвету — без scatter() уже неудобно.Если у вас Django/FastAPI-проект с генерацией графиков по данным из БД или ETL, это базовый инструмент, который быстро превращает сырые массивы в читаемую визуализацию.
This media is not supported in your browser
VIEW IN TELEGRAM
Fable 5 скоро вернётся в публичный доступ
В исходном коде Claude Code обнаружены упоминания о возвращении модели Fable 5 в публичный доступ с изменённой моделью распространения — её больше не потребуется покупать отдельно, вместо этого будет применяться недельный лимит как для других моделей. Если информация подтвердится, пользователи платных тарифов смогут использовать Fable 5 в рамках своих подписок. Причины снятия ограничений по национальной безопасности остаются неясными. Хотя это п…
➡️ Читайте на сайте: https://aff.top/blog/fable-5-skoro-vernetsia-v-publichnyi-dostup
🧠 Ещё больше инсайтов → в канале AFF.top
В исходном коде Claude Code обнаружены упоминания о возвращении модели Fable 5 в публичный доступ с изменённой моделью распространения — её больше не потребуется покупать отдельно, вместо этого будет применяться недельный лимит как для других моделей. Если информация подтвердится, пользователи платных тарифов смогут использовать Fable 5 в рамках своих подписок. Причины снятия ограничений по национальной безопасности остаются неясными. Хотя это п…
➡️ Читайте на сайте: https://aff.top/blog/fable-5-skoro-vernetsia-v-publichnyi-dostup
🧠 Ещё больше инсайтов → в канале AFF.top
7 ошибок в автоматизации на Python, из-за которых скрипт ломается в проде
Автоматизация часто умирает не в логике, а на краях: файл не там, API отвечает пусто, задача запускается дважды. Если скрипт делает бизнес-операцию, он должен переживать сбои, а не только успешный сценарий.
— Нет идемпотентности: повторный запуск создает дубли, а не пропускает уже обработанное.
— Нет явных таймаутов и ретраев: зависший HTTP-запрос висит бесконечно, а ошибка сети валит весь поток.
— Смешаны ввод, обработка и вывод: код нельзя тестировать по частям и трудно переиспользовать.
— Логика завязана на пути, переменные окружения и ручной запуск из терминала.
Отдельно проверяйте конкуренцию: если два воркера читают одну очередь или один и тот же файл, нужен лок или атомарная запись. И не полагайтесь на «если упало — перезапущу руками»: после перезапуска скрипт должен понимать, что уже сделал, а что еще нет.
Хорошее правило простое: каждый шаг должен быть безопасен к повтору, а каждый внешний вызов — иметь таймаут, лог и понятную ошибку.
Автоматизация часто умирает не в логике, а на краях: файл не там, API отвечает пусто, задача запускается дважды. Если скрипт делает бизнес-операцию, он должен переживать сбои, а не только успешный сценарий.
— Нет идемпотентности: повторный запуск создает дубли, а не пропускает уже обработанное.
— Нет явных таймаутов и ретраев: зависший HTTP-запрос висит бесконечно, а ошибка сети валит весь поток.
— Смешаны ввод, обработка и вывод: код нельзя тестировать по частям и трудно переиспользовать.
— Логика завязана на пути, переменные окружения и ручной запуск из терминала.
Отдельно проверяйте конкуренцию: если два воркера читают одну очередь или один и тот же файл, нужен лок или атомарная запись. И не полагайтесь на «если упало — перезапущу руками»: после перезапуска скрипт должен понимать, что уже сделал, а что еще нет.
Хорошее правило простое: каждый шаг должен быть безопасен к повтору, а каждый внешний вызов — иметь таймаут, лог и понятную ошибку.
Pydantic ломается не в моделях, а в границах данных: 5 правил, которые спасают API
Если Pydantic у вас «иногда валится без причины», проблема обычно не в валидации, а в том, что входной контракт размыт. Модель должна быть не копией JSON, а фильтром: принимать лишнее только осознанно, а поля с бизнес-смыслом делать явными.
• Делайте отдельные схемы для input и output. Одна модель на всё почти всегда приводит к лишним optional-полям и странным дефолтам.
• Не прячьте бизнес-логику в валидаторах. Валидатор проверяет форму и типы, а не решает, можно ли создавать объект.
• Явно задавайте alias, если внешний API живёт на snake_case, а внутренний код — на другом соглашении.
• Для вложенных объектов лучше провалиться сразу, чем тащить None глубоко в сервисный слой.
Ещё одна частая ошибка — надеяться, что Pydantic «сам всё приведёт к нужному виду». Он приведёт, но иногда слишком щедро: строка станет числом, пустой список — валидным значением, а лишнее поле тихо пройдёт дальше. Для критичных границ лучше включать строгую валидацию и не полагаться на магию преобразований.
Если модель начинает разрастаться, это сигнал разнести её на DTO, response-схемы и внутренние типы. Так код проще тестировать, а ошибка становится локальной: не в десяти сервисах, а в одном месте входа.
Если Pydantic у вас «иногда валится без причины», проблема обычно не в валидации, а в том, что входной контракт размыт. Модель должна быть не копией JSON, а фильтром: принимать лишнее только осознанно, а поля с бизнес-смыслом делать явными.
• Делайте отдельные схемы для input и output. Одна модель на всё почти всегда приводит к лишним optional-полям и странным дефолтам.
• Не прячьте бизнес-логику в валидаторах. Валидатор проверяет форму и типы, а не решает, можно ли создавать объект.
• Явно задавайте alias, если внешний API живёт на snake_case, а внутренний код — на другом соглашении.
• Для вложенных объектов лучше провалиться сразу, чем тащить None глубоко в сервисный слой.
Ещё одна частая ошибка — надеяться, что Pydantic «сам всё приведёт к нужному виду». Он приведёт, но иногда слишком щедро: строка станет числом, пустой список — валидным значением, а лишнее поле тихо пройдёт дальше. Для критичных границ лучше включать строгую валидацию и не полагаться на магию преобразований.
Если модель начинает разрастаться, это сигнал разнести её на DTO, response-схемы и внутренние типы. Так код проще тестировать, а ошибка становится локальной: не в десяти сервисах, а в одном месте входа.
Starlette — это не «мини-FastAPI», а каркас, который удобно ломать и собирать под себя
Если нужен тонкий HTTP-слой для микросервиса, вебхуков или внутреннего API, Starlette часто выигрывает за счёт простоты: маршруты, middleware, фоновые задачи, WebSocket — без лишней магии. Он хорош там, где важнее контролировать поведение, чем тащить большой фреймворк ради пары эндпоинтов.
Что обычно делают неправильно:
• Пишут sync-хендлеры и потом удивляются блокировкам в проде
• Вешают тяжёлую логику прямо в endpoint вместо сервиса или очереди
• Игнорируют lifespan-события и теряют инициализацию клиентов, пулов, кешей
• Смешивают ручную работу с request/response и начинают плодить дублирование
Если проект растёт, Starlette удобно использовать как базу для тонкой архитектуры: отдельно слой транспорта, отдельно бизнес-логика, отдельно интеграции. Это особенно заметно в async-проектах, где один плохо написанный handler может тормозить весь ворклоад.
Ещё плюс: Starlette легко тестировать и легче читать в ревью, когда в коде нет лишнего «магического» слоя. Но это работает только если сразу договориться о границах: где валидируются данные, где ловятся ошибки, где живут зависимости.
Хорошее правило простое: если вам нужен контроль над HTTP и минимум абстракций, Starlette — не компромисс, а осознанный выбор.
Если нужен тонкий HTTP-слой для микросервиса, вебхуков или внутреннего API, Starlette часто выигрывает за счёт простоты: маршруты, middleware, фоновые задачи, WebSocket — без лишней магии. Он хорош там, где важнее контролировать поведение, чем тащить большой фреймворк ради пары эндпоинтов.
Что обычно делают неправильно:
• Пишут sync-хендлеры и потом удивляются блокировкам в проде
• Вешают тяжёлую логику прямо в endpoint вместо сервиса или очереди
• Игнорируют lifespan-события и теряют инициализацию клиентов, пулов, кешей
• Смешивают ручную работу с request/response и начинают плодить дублирование
Если проект растёт, Starlette удобно использовать как базу для тонкой архитектуры: отдельно слой транспорта, отдельно бизнес-логика, отдельно интеграции. Это особенно заметно в async-проектах, где один плохо написанный handler может тормозить весь ворклоад.
Ещё плюс: Starlette легко тестировать и легче читать в ревью, когда в коде нет лишнего «магического» слоя. Но это работает только если сразу договориться о границах: где валидируются данные, где ловятся ошибки, где живут зависимости.
Хорошее правило простое: если вам нужен контроль над HTTP и минимум абстракций, Starlette — не компромисс, а осознанный выбор.
This media is not supported in your browser
VIEW IN TELEGRAM
Chat GPT-5.6 будут выдавать лишь избранным
США ограничивают публичный доступ к новым ИИ-моделям: теперь его выдают только проверенным пользователям после обязательной 30-дневной процедуры верификации. Сэм Альтман называет это самым быстрым путём к публичному релизу. Эффективность меры вызывает сомнения — китайские разработчики традиционно копируют модели в течение суток после выхода.
➡️ Читайте на сайте: https://aff.top/blog/chat-gpt-5-6-budut-vydavat-lish-izbrannym
🧠 Ещё больше инсайтов → в канале AFF.top
США ограничивают публичный доступ к новым ИИ-моделям: теперь его выдают только проверенным пользователям после обязательной 30-дневной процедуры верификации. Сэм Альтман называет это самым быстрым путём к публичному релизу. Эффективность меры вызывает сомнения — китайские разработчики традиционно копируют модели в течение суток после выхода.
➡️ Читайте на сайте: https://aff.top/blog/chat-gpt-5-6-budut-vydavat-lish-izbrannym
🧠 Ещё больше инсайтов → в канале AFF.top
This media is not supported in your browser
VIEW IN TELEGRAM
Vk удалили из App store: что дальше?
Удаление VK из App Store заблокировало доступ для владельцев iPhone в России, но проблема решаема. Арбитражники теряют один канал, но не аудиторию — 20–30 млн пользователей iOS остались на месте. Вместо VK стоит переориентироваться на альтернативные источники: Telegram Ads с таргетингом на iOS, push-сети типа AdProfex, MTS Ads и Beeline Ads. VK может последовать примеру Max и запустить PWA-приложение для восстановления уведомлений. Главный вывод…
➡️ Читайте на сайте: https://aff.top/blog/vk-udalili-iz-app-store-chto-dalshe
🧠 Ещё больше инсайтов → в канале AFF.top
Удаление VK из App Store заблокировало доступ для владельцев iPhone в России, но проблема решаема. Арбитражники теряют один канал, но не аудиторию — 20–30 млн пользователей iOS остались на месте. Вместо VK стоит переориентироваться на альтернативные источники: Telegram Ads с таргетингом на iOS, push-сети типа AdProfex, MTS Ads и Beeline Ads. VK может последовать примеру Max и запустить PWA-приложение для восстановления уведомлений. Главный вывод…
➡️ Читайте на сайте: https://aff.top/blog/vk-udalili-iz-app-store-chto-dalshe
🧠 Ещё больше инсайтов → в канале AFF.top