Python Web & Scripts — Django, FastAPI, скрипты
436 subscribers
19 photos
2 videos
24 links
Python для веба и автоматизации: Django, FastAPI, Flask, Starlette. Скрипты для парсинга, ETL, обработки данных, integrations. Async, pydantic, deployment patterns.
Канал сети public.tg.
Download Telegram
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
7 ошибок в автоматизации на Python, из-за которых скрипт ломается в проде

Автоматизация часто умирает не в логике, а на краях: файл не там, API отвечает пусто, задача запускается дважды. Если скрипт делает бизнес-операцию, он должен переживать сбои, а не только успешный сценарий.

— Нет идемпотентности: повторный запуск создает дубли, а не пропускает уже обработанное.
— Нет явных таймаутов и ретраев: зависший HTTP-запрос висит бесконечно, а ошибка сети валит весь поток.
— Смешаны ввод, обработка и вывод: код нельзя тестировать по частям и трудно переиспользовать.
— Логика завязана на пути, переменные окружения и ручной запуск из терминала.

Отдельно проверяйте конкуренцию: если два воркера читают одну очередь или один и тот же файл, нужен лок или атомарная запись. И не полагайтесь на «если упало — перезапущу руками»: после перезапуска скрипт должен понимать, что уже сделал, а что еще нет.

Хорошее правило простое: каждый шаг должен быть безопасен к повтору, а каждый внешний вызов — иметь таймаут, лог и понятную ошибку.
Pydantic ломается не в моделях, а в границах данных: 5 правил, которые спасают API

Если 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 — не компромисс, а осознанный выбор.
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
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
Pydantic ломает меньше, если сразу договориться о правилах на входе

Если модель используется в API, скриптах и фоновых задачах, держите один подход к данным:
— вход валидируйте на границе;
— внутри системы работайте уже с типизированным объектом;
— ошибки отдавайте до того, как логика успеет разъехаться.

Самая частая ошибка — смешивать проверку, преобразование и бизнес-логику в одном месте. В итоге строка внезапно становится числом, пустой список проходит как валидный payload, а дефолты прячут баги. Лучше явно описать обязательные поля, ограничения и преобразования в модели, чем потом искать «магическое» поведение в обработчике.

Полезная привычка: отдельные модели для входа, ответа и внутреннего представления. Тогда payload от клиента, DTO для сервиса и объект для хранения не начинают жить одной жизнью. Ещё один плюс — проще тестировать: вы проверяете схему, а не весь endpoint целиком.

И не злоупотребляйте «умными» валидаторами там, где достаточно простых типов и ограничений. Чем меньше скрытой логики в модели, тем легче читать код, переиспользовать его в FastAPI и не ловить сюрпризы в парсерах и скриптах.
Scrapy ломается не на парсинге, а на плохой архитектуре проекта

Если у вас пауки начинают дублировать запросы, падать на редких страницах и засорять пайплайны, проблема обычно не в XPath. В Scrapy лучше сразу разнести роли: spider только собирает URL и поля, item pipeline чистит и валидирует, middleware отвечает за сеть и антибот-логику.

Три вещи, которые экономят часы:
— не хранить бизнес-логику в parse(), иначе паук быстро превращается в свалку;
— делать idempotent-обработку items, чтобы повторный прогон не плодил дубликаты;
— выносить настройки селекторов, заголовков и retry-политик в отдельные модули, а не копировать по спайдерам.

Если нужно ускорение, смотрите не только на concurrency, но и на лимиты внешнего сайта: иногда узкое место — DNS, иногда блокировки, иногда тяжелый pipeline. Еще полезно логировать причины пропуска item, а не только ошибки, тогда видно, где теряются данные.

Хороший Scrapy-проект — это когда паук можно остановить, запустить заново и получить тот же набор данных без ручной чистки.
7 ошибок в Python-скриптах, из-за которых ломается даже простой автоматизатор

Ошибка 1 — смешивать логику, ввод-вывод и парсинг в одном файле. Когда скрипт растёт, его уже нельзя нормально тестировать и переиспользовать.

Ошибка 2 — ловить except: без конкретики. Так прячутся реальные баги: сетевые сбои, битые данные, неверный формат ответа. Лучше ловить только ожидаемые исключения и логировать контекст.

Ошибка 3 — игнорировать таймауты и ретраи. Любой запрос к API, БД или внешнему сервису должен либо быстро падать, либо повторяться по правилам. Иначе зависание выглядит как «всё работает», пока очередь не встанет.

Ошибка 4 — тащить в прод сырые print() и магические константы. Для отладки годится, для эксплуатации нужен logging, конфиг и явные параметры. Тогда скрипт можно запускать и вручную, и по cron, и из Django-задачи.

Держите код маленькими блоками: отдельная функция для данных, отдельная для действий, отдельная для ошибок. Такой Python проще чинить, проще покрывать тестами и легче передавать другому разработчику.