Python Web & Scripts — Django, FastAPI, скрипты
190 subscribers
93 photos
18 videos
1 file
247 links
Python для веба и автоматизации: Django, FastAPI, Flask, Starlette. Скрипты для парсинга, ETL, обработки данных, integrations. Async, pydantic, deployment patterns.
Канал сети public.tg.
Download Telegram
Starlette ломают не маршруты, а обработчики запросов и фоновые задачи

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

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

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

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

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

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

Для веб-проектов и автоматизации держите базовый набор привычек:
• валидируйте вход через pydantic или явные проверки;
• отделяйте чистую логику от I/O и сетевых вызовов;
• не смешивайте бизнес-правила с парсингом ответа;
• логируйте контекст ошибки, а не только текст traceback.

Отдельно следите за async: не вызывайте блокирующие библиотеки внутри event loop без обвязки, не создавайте лишние соединения в цикле и не надеетесь, что «маленькая задержка» спасёт от таймаутов. Для Django и FastAPI это особенно заметно на интеграциях, когда внешние сервисы начинают отвечать медленнее обычного.

И ещё одна вещь, которую стоит проверить в любом Python-проекте: повторяемость запуска. Если код нельзя поднять из чистого окружения по короткой инструкции, значит у вас не код, а набор удачных совпадений.
Forwarded from Natalia
ВПЕРВЫЕ! ТОЛЬКО ОДИН ВЕЧЕР!

🫥ПИАР-ВОЙС В ЭТОМ ЧАТЕ🫥

Участников никто не знает.
Откуда они? Хуй его знает.
Темы — просто пиздец!

• Аналитика на двух лидах
• Слив анлим бюджетов
• Как просрать медийку
• Где найти нормальную работу

• Как закупиться себе в карман

Все это для тех, кто придет на ВОЙС
Как делать PR, маркетинг и деньги в арбитраже трафика

На котором обсудим:
• На что компании еще готовы тратить деньги
• За чье внимание мы вообще конкурируем
• Что действительно работает, а что сливает бабки
• PR vs маркетинг
• Как измерить результаты кампейнов
• Что делать с запросом «хочу, чтобы про нас все знали»


Модераторы: @adv_god @natnetak

NO RESPECT CHAT • 27.08 • 19:00 GMT+3
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Иногда мне кажется, что я работаю не в iGaming, а в похоронном бюро.

Каждый день кто-то приносит очередной продукт и говорит: «У нас почему-то падает LTV.»

Потом открываешь аналитику и понимаешь, что игроки предупреждали об этом ещё месяц назад.

Просто никто не слушал.

Я — Head of Retention. И в своём канале разбираю ошибки, из-за которых команды месяцами теряют LTV, даже не замечая этого.
7 ошибок в Python-скриптах, из-за которых автоматизация тихо ломается

В Python чаще всего падает не «логика», а обвязка: ввод, сеть, файлы, окружение. Скрипт может работать на одной машине и развалиться на другой, если не зафиксировать базовые правила.

— Не проверяют входные данные. Любой парсинг, CSV, JSON и ответ API надо считать грязным, пока не доказано обратное.
— Ловят Exception везде подряд. Так вы скрываете реальную причину и получаете «магическую» тишину вместо ошибки.
— Пишут в файл без атомарности. При сбое остаётся битый результат, который потом сложно отличить от валидного.
— Не разделяют бизнес-логику и I/O. Когда сеть, диск и преобразования смешаны, тестировать и чинить это больно.

Ещё одна типовая проблема — отсутствие таймаутов и повторов там, где они нужны. Любой запрос к внешнему сервису должен либо завершаться быстро, либо падать предсказуемо. Иначе один зависший вызов блокирует всю цепочку.

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

Если проект на Flask начинает расти, самые дорогие баги обычно не в самих view-функциях. Они появляются там, где смешали конфиг, бизнес-логику и доступ к request: всё работает, пока один эндпоинт и один разработчик.

За неделю в репах чаще всего всплывают 4 вещи:
— глобальные переменные вместо app context или g;
— конфиг, собранный из os.environ прямо в модулях;
— SQL и HTTP-запросы внутри handler без слоя сервиса;
— каша из blueprints без понятных границ ответственности.

Проверка перед коммитом простая: view должна принимать request и отдавать response, а не управлять всем приложением. Конфиг — в одном месте, зависимости — через фабрику приложения, фоновые задачи — отдельно от синхронного запроса. Если код нельзя протестировать без поднятого сервера, это уже запах архитектуры.

Flask хорош там, где важны контроль и минимум магии. Но этот контроль работает только если с самого начала договориться о слоях: routing, services, storage, integrations. Тогда проект не превращается в набор скриптов с веб-обвязкой.
7 ошибок в python-скриптах, из-за которых автоматизация ломается в самый неудобный момент

Скрипт, который «всегда работает», обычно просто ещё не получил плохой вход. В репозиториях чаще всего всплывают одни и те же проблемы:

— жёстко прошитые пути, логины, токены и URL;
— отсутствие проверок на пустой ответ и неожиданный формат;
— падение на первом же исключении без повторной попытки;
— запись результата прямо поверх исходных данных;
— отсутствие понятных логов, из-за чего непонятно, где всё сломалось.

Если скрипт ходит в сеть, добавляйте таймауты, ретраи и явную обработку 4xx/5xx. Если читает файлы — валидируйте кодировку, схему и наличие нужных колонок до основной логики. Если запускается по cron или из CI, вывод должен быть коротким, но достаточным: что обработали, сколько пропустили, на каком шаге упали.

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

Хороший скрипт не тот, который «мало кода», а тот, который переживает грязные данные и даёт понятную точку отказа.
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
В роликах Youtube теперь можно рекламировать товары Amazone

➡️ Читайте на сайте: https://aff.top/blog/v-rolikakh-youtube-teper-mozhno-reklamirovat-tovary-amazone

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Google выпустил Gemini Omni 1.1 Flash

Google обновил Gemini Omni для генерации видео: модель умеет продолжать сцены с учётом до 10 секунд контекста и собирать ролик до 40 секунд, работать по референсу и делать переходы между кадрами. Главный вывод — инструмент стал практичнее для продакшена, а посекундная цена делает его заметно доступнее для тестов и рабочих задач.

➡️ Читайте на сайте: https://aff.top/blog/google-vypustil-gemini-omni-1-1-flash

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Топ 5 PWA-сервисов для залива дейтинга

Статья показывает, что PWA выгодны не только для гемблы: в дейтинге они дают пуш-базу, больше траста и помогают маскировать оффер под бренд. Главный выбор зависит от цены инсталлов и теста GEO: для старта лучше бесплатные или дешёвые решения, а Progressier выделяется как самый практичный вариант для залива дейтинга.

➡️ Читайте на сайте: https://aff.top/blog/top-5-pwa-servisov-dlia-zaliva-deitinga

🧠 Ещё больше инсайтов → в канале AFF.top
7 типовых ошибок в Python-скриптах, которые ломают автоматизацию на ровном месте

Скрипт, который «работает у меня», часто падает в cron, Docker или на чужой машине. Причина почти всегда одна: в коде не учли среду, входные данные или побочные эффекты.

— Не фиксируют путь и запускают файл из текущей директории; в итоге относительные пути ищут не там, где лежит скрипт.
— Читают CSV/JSON без проверки схемы: одно пустое поле, и пайплайн едет дальше с мусором.
— Ловят Exception везде подряд и глотают ошибку, после чего баг становится «тихим».
— Смешивают I/O и бизнес-логику: потом невозможно тестировать парсер, загрузчик или интеграцию отдельно.

Ещё одна частая проблема — отсутствие идемпотентности. Если скрипт можно запустить повторно, он не должен дублировать записи, слать повторные письма или затирать уже обработанные файлы. Для автоматизации это важнее, чем «красивый» код.

Минимальный набор защиты простой: явный конфиг, логирование с контекстом, проверки входных данных и осмысленные коды выхода. Если шаг провалился, скрипт обязан сказать, где именно, а не молча завершиться с нулём.

Если перед запуском вы прогоняете только «примерный» файл, баг всё равно найдёт вас в проде. Проверяйте пути, формат входа и повторный запуск — это экономит больше времени, чем любой рефакторинг.
🔥 Новый участник НеТОПа на AffPapa!
https://affpapa.org/netop

🏆 НеТОП на AffPapa — https://affpapa.org/netop/go/27?src=broadcast
Платный рейтинг индустрии: плати больше — стоишь выше. Займи место в топе за USDT.
💰 Ставка: $100 · сейчас #1 в рейтинге
🔥 justbrand_create — новый участник рейтинга НеТОП на AffPapa!

🏆 Своё место в топе честно купил justbrand_create: https://affpapa.org/netop/go/28?src=broadcast

💰 Ставка: $111 · сейчас #1 в рейтинге

Весь рейтинг → https://affpapa.org/netop
Django тормозит не в моделях: 5 мест, где обычно течёт время

Частая ошибка — искать проблему только в SQL. В Django узкое место часто прячется в шаблонах, сериализации и лишних запросах на каждый объект. Если страница стала «тяжёлой», сначала смотрите не на красивый код, а на количество обращений к БД и объём данных, который реально проходит через view.

— N+1 в списках: forgot prefetch_related/select_related, и каждый элемент тянет свой запрос.
— Тяжёлые методы модели/свойства: логика внутри __str__, property и template tags вызывается чаще, чем кажется.
— Перетаскивание всего объекта: values() и only() могут помочь, если нужны не все поля.
— Сериализация без фильтрации: DRF-serializer легко раздувает ответ лишними вложенностями.
— Шаблоны с логикой: if/for в template не должны заменять подготовку данных во view.

Полезная привычка: перед оптимизацией включайте счётчик запросов и смотрите, где один экран превращается в десятки обращений. Часто исправление занимает 10 минут: добавить prefetch, вынести вычисление в annotate или перестроить queryset.

Если в Django «всё медленно», почти всегда виноват не фреймворк, а форма запроса и место, где вы считаете данные.
7 ошибок в python-скриптах, из-за которых автоматизация ломается в самый неудобный момент

Скрипт работает на ноутбуке и падает на сервере — классика. Обычно причина не в Python, а в мелочах: зависимость от текущей папки, ручные пути к файлам, скрытые переменные окружения.

Проверь базовый набор:
— все пути строятся через pathlib или os.path.join;
— входные данные валидируются до начала работы;
— логирование пишет не только ошибку, но и контекст задачи;
— сетевые запросы имеют timeout и retry;
— временные файлы чистятся даже при исключении.

Отдельно опасны скрипты, которые молча проглатывают исключения. Если except просто pass, баг уходит в тень и всплывает уже в данных, отчётах или интеграциях. Лучше падать шумно, чем делать вид, что всё в порядке.

Ещё одна частая проблема — запуск без параметров окружения. Конфиг, токены, рабочие каталоги, права на запись и кодировка файлов должны задаваться явно. Тогда скрипт можно переносить между cron, Docker и локальной машиной без сюрпризов.

Если скрипт нужен больше одного раза, относись к нему как к сервису: с конфигом, логами, проверками и понятной точкой входа. Так он переживёт и перенос, и рост данных, и чужие руки.
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Google отменил ручную пессимизацию в Еврозоне

Google перестал пессимизировать крупные новостники за паразитные страницы с казино и другими партнёрскими офферами в ЕЭЗ. Для арбитража вывод простой: в Европе схема с «пирогами» больше не даёт преимущества от траста основного домена, а Google впервые применяет разные правила по GEO под давлением регулятора.

➡️ Читайте на сайте: https://aff.top/blog/google-otmenil-ruchnuiu-pessimizaciiu-v-evrozone

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Вышел OpenClaw 2.0

OpenClaw вышел на новый уровень: совместная работа, нормальный веб-интерфейс и более простая настройка. Разбираем, зачем это обновление важно и как оно меняет работу с ИИ-агентом.

➡️ Читайте на сайте: https://aff.top/blog/vyshel-openclaw-2-0

🧠 Ещё больше инсайтов → в канале AFF.top
5 ошибок во Flask, из-за которых маленький проект быстро превращается в комок

Flask берут за простоту, а потом незаметно собирают вокруг него мини-фреймворк из костылей. За неделю в репах чаще всего всплывает одно и то же:
— весь код в одном файле;
— бизнес-логика живёт в view-функциях;
— конфиг правят руками в коде;
— нет единой схемы для ошибок и ответов.

Если проект растёт, сразу разносите слои: routes отдельно, сервисы отдельно, модели отдельно. View должна принимать запрос, валидировать вход и отдавать ответ, а не считать скидки, ходить в БД и собирать payload. Это резко снижает цену любого рефакторинга.

Второй узкий участок — конфиг и зависимости. Не храните настройки в глобальных переменных и не создавайте клиент БД прямо в обработчике. Делайте фабрику приложения, прокидывайте зависимости явно и держите один путь инициализации для тестов, dev и prod. Иначе отладка превращается в охоту за неявным состоянием.

Для ошибок тоже нужен порядок: свои исключения, единый формат JSON, понятные коды. Когда фронт или скрипт интеграции получает разные ответы на похожие сбои, поддержку начинает штормить. Если в проекте есть авторизация, лимиты или фоновые задачи — эти вещи тоже стоит выносить из view в отдельные модули.

Если Flask нужен не как демка, а как рабочий сервис, дисциплина важнее скорости старта: структура, фабрика, явные зависимости и единые ответы экономят часы на каждом следующем изменении.
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Павел Дуров анонсировал Gram Wallet

Дуров анонсировал Gram Wallet — нативный некастодиальный криптокошелёк внутри Telegram. Он обещает мгновенные переводы с нулевой комиссией между пользователями и более простые обновления за счёт архитектуры с валидаторами. Запуск уже идёт, а полный релиз ждут в ближайшие недели.

➡️ Читайте на сайте: https://aff.top/blog/pavel-durov-anonsiroval-gram-wallet

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP - про арбитраж трафика и CPA рынок!
This media is not supported in your browser
VIEW IN TELEGRAM
Новые ограничение в Instagram для ИИ-профилей

Instagram ужесточает условия для УБТ: аккаунты помечают как созданные ИИ, а без такой маркировки можно словить теневой бан. Если нейросеть лишь улучшает контент, санкций нет. Для арбитражников это значит, что привычные схемы в FB и Инсте будут работать хуже, а обход антифрода станет сложнее.

➡️ Читайте на сайте: https://aff.top/blog/novye-ogranichenie-v-instagram-dlia-ii-profilei

🧠 Ещё больше инсайтов → в канале AFF.top