Python Web & Scripts — Django, FastAPI, скрипты
192 subscribers
68 photos
11 videos
141 links
Python для веба и автоматизации: Django, FastAPI, Flask, Starlette. Скрипты для парсинга, ETL, обработки данных, integrations. Async, pydantic, deployment patterns.
Канал сети public.tg.
Download Telegram
7 мест в Django-проекте, где тихо рождаются баги и лишние запросы

Если проект на Django уже живёт, проблемы обычно прячутся не в «бизнес-логике», а в связке моделей, шаблонов и админки. За неделю в репах чаще всего всплывают одни и те же вещи: лишние обращения к БД, тяжёлые queryset’ы и скрытая работа в свойствах моделей.

— В шаблоне вызывают методы или свойства, которые лезут в БД. Один цикл превращается в пачку запросов.
— В __str__ и admin list_display кладут расчёты или обращение к связям. Потом тормозит даже список объектов.
— Вьюха тянет всё подряд вместо точечного only(), select_related() и prefetch_related(). На маленьких данных это не видно, на реальных — уже да.

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

— Перед релизом прогоняйте экран с логированием SQL.
— Отдельно смотрите admin, потому что там часто сидят самые дорогие поля.
— Не прячьте запросы в свойствах моделей: это почти всегда мина для поддержки 🔧

Правило простое: если место вызова не видно сразу, значит его нужно сделать заметным. Тогда Django остаётся быстрым и предсказуемым, а не превращается в коллекцию сюрпризов.
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
OpenAI сделала ChatGPT-5.6 Luna бесплатной

OpenAI делает ставку на доступность: ChatGPT-5.6 Luna стала бесплатной на сайте, а в Sol добавили ползунок глубины рассуждений для ускорения ответов. Для сложных запросов готовят кнопку Think. Пока это веб-эксклюзив, но вывод очевиден: OpenAI усиливает продукт и давит на конкурентов бесплатным доступом.

➡️ Читайте на сайте: https://aff.top/blog/openai-sdelala-chatgpt-5-6-luna-besplatnoi

🧠 Ещё больше инсайтов → в канале AFF.top
Forwarded from AFF.TOP
This media is not supported in your browser
VIEW IN TELEGRAM
Metamask представил свою криптокошелёк для ИИ

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

➡️ Читайте на сайте: https://aff.top/blog/metamask-predstavil-svoiu-kriptokoshelek-dlia-ii

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

У Flask простая поверхность, и именно поэтому в нём легко нарастить хаос: один файл со всем, глобальные объекты, ручная регистрация всего подряд. Через пару месяцев проект начинает тормозить не по CPU, а по организации кода.

Если делать проект живучим, держите базу такой:
— app factory вместо единого app.py;
— конфиг отдельно от логики, через объект или модуль;
— blueprints для границ доменов, а не ради красоты;
— расширения и БД инициализируйте в одном месте, а не в импортах;
— фоновые задачи и интеграции выносите из request cycle.

Самая частая ошибка — смешать представление, бизнес-логику и доступ к данным в одном обработчике. Тогда тесты становятся болезненными, а любое изменение тянет цепочку побочных эффектов. В Flask это особенно заметно, потому что фреймворк не навязывает архитектуру и легко позволяет “сделать быстро” в ущерб поддерживаемости.

Если проект уже вырос, не переписывайте всё сразу: сначала вынесите конфиг, потом фабрику приложения, затем разрежьте маршруты по модулям. В таком порядке Flask перестаёт быть набором файлов и становится приложением, которое можно сопровождать без боли.
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Media is too big
VIEW IN TELEGRAM
⚡️Я первый арбитражный блогер с миллионом подписчиков!

Коллеги, я перезжаю в этот канал - 1 000 000 подписчиков у Иванова! Все строго про арбитраж трафика!

Переезжает сюда - https://t.me/+vKOoe6K4yL0wMzEy

P.S. Популярно тот в ком люди видят своего - мне очень повезло что я такая посредственность!



____
🤔 Консоли Google Play и Apple Developer надо? Phoenix — 100% свой фарм с 2021-го. Забрать акки@phoenix_seller_bot 🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Дима Лето - TikTok Ads mVas (Dzmitry Leto (Сб-Вс off day ))
Я короче хз зачем мне это , но напишу!
Короче смотрим за "ноунейом" ( ЕЮ ) и тот вообще крышей поехал) взял себе крутанул канал на 1млн подписчиков и хочет сделать его своим основным?
Армия ботов в перед!

Вот его новый канал если что.. https://t.me/+vKOoe6K4yL0wMzEy
Жирный кукухой поплыл, купил канал почти на лллллям двести подписчиков. Амбассадоры не работают?

Или как теперь PR оценивать? Одна полуголая курдюком трясёт, второй — то трезвый, то бухой, с биполяркой.

Люди, очнитесь.
_________________

Канал | Блог | YouTube | Мультитул 2.0 | ПОЛИГON by Петя 2.0

👎 @pacan с пьяну подпись под каждым постом купил, а текст дал такй:

ХОЧЕТСЯ И РЫБКУ СЪЕСТЬ, И..🎣 Залить Fishing Time на
TopX
 FTD идёт по 3$, плюс ребята РАЗДАЮТ 1,000,000$ среди баеров! Инфа
ТУТ!
Please open Telegram to view this post
VIEW IN TELEGRAM
Flask ломается не на роутинге, а на границе между приложением и скриптом

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

Держите три правила:
— создавайте приложение через фабрику, а не в модуле с роутами;
— выносите настройки в отдельный объект, без прямого чтения env в бизнес-логике;
— не тяните db/session/client в глобальную область, если их можно передать явно.

Для маленького сервиса Flask удобен именно тем, что в нём легко держать границу между HTTP-слоем и кодом домена. Маршрут должен принимать данные, вызывать функцию и отдавать ответ. Всё, что похоже на вычисления, парсинг, интеграции и очереди, лучше вынести в отдельные модули — тогда код можно переиспользовать и в CLI, и в воркере.

Если нужен долгоживущий Flask-проект, проверяйте не «как быстро поднялся сервер», а насколько легко заменить хранилище, подменить клиент внешнего API и прогнать тесты без веб-стека. Если это делается без магии, проект будет жить спокойно.
Forwarded from Иванов и арбитраж трафика
МАКСИМАЛЬНО ОБЕСКУРАЖЕН, УДРУЧЁН И, НЕ ПОБОЮСЬ ЭТОГО СЛОВА, ОТОРОПЕЛ ОТ ПРОИСХОДЯЩЕГО В «ПИАР»-МИРЕ НАШЕЙ СФЕРЫ.

Я пребываю в некотором нравственном недоумении от той удивительной метаморфозы, которую в последнее время претерпевает понятие «пиар». То, что раньше считалось дурновкусием, беспринципностью и откровенным свинством, теперь, видимо, принято именовать нестандартной маркетинговой стратегией.

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

А во-вторых, вы вообще понимаете, куда мы идём?

Сначала люди хотят выйти на РУ и СНГ рынок. Понимают, что нормальный путь - это долго, дорого, кропотливо и без каких-либо гарантий результата. И вместо этого выбирают дорожку дешёвого хайпа, совершенно не сообразуясь с тем, что именно они делают с конкретным человеком.

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

И я почти уверен, что они прекрасно понимали: это увижу и я. И что как человек, который способен сопереживать подобным людям, в том числе потому, что сам являюсь инвалидом детства второй группы, я мимо этого не пройду.

В итоге для них это один кидок и море хайпа. Но какой ценой? Стоило ли это того?
Не думаю.

Рынок взрослеет. Подобную хуйню, может быть, ещё и не предают публичной анафеме, но уже отлично запоминают. А потом при любой совместной работе держат в уме простую характеристику контрагента: «А, это те ребята. Им похуй».

Репутация вообще штука крайне занятная. Создаётся годами, а профукивается иногда одним весьма опрометчивым маркетинговым решением.

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

Если конкретнее - быть AffPapa.org.

Этот смелый и совершенно точно стремящийся к успеху молодой человек может впредь без малейшего смущения носить на себе бренд AffPapa.

Я приложу все доступные мне усилия, чтобы единственной устойчивой ассоциацией с AffPapa со временем стал именно AffPapa.org.

Полагаю, это будет наиболее изящным разрешением сложившейся нравственно-маркетинговой коллизии.

Обсудить все это можно в моем чате - будьте аккуратны, там не всем рады, точней никому не рады, от чего он и великолепен


С уважением, Иванов Е.Ю!
Pydantic ломают не типы, а границы входных данных

Если модель валится в рантайме, проблема обычно не в самой схеме, а в том, что в неё тащат всё подряд: raw JSON, формы, query params и внутренние dict без разделения слоёв. Для веба полезно держать три уровня: входной payload, нормализованную доменную модель и объект для ответа.

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

Отдельная ловушка — nested структуры. Если список объектов может быть частично грязным, ошибка в одном элементе не должна скрывать остальные. Лучше явно собирать ошибки и отдавать их в одном ответе, чем чинить данные молча.

Ещё одна полезная привычка: не использовать одну и ту же модель для create, update и response. Это почти всегда приводит к лишним optional-полям, странным default и утечке внутренних атрибутов в API.

Если держать Pydantic только на границе системы, код становится проще: меньше магии в сервисах, меньше сюрпризов в тестах, быстрее понять, где именно сломался контракт.
Forwarded from AffPapa! Клуб спящих бизнесменов! Потрачено!
Дорогие партнёры!

С августа и по 31 сентября в BETERA PARTNERS запускаем конкурс для всех партнёров.
Всё просто: чем больше квалифицированных FTD, тем выше ваше место в рейтинге.
🏆 Что можно забрать?
• Apple MacBook Air 15
• Apple iPad 11
• Apple Watch Series 11
• и другие призы для наших любимых партнёров ❤️
Как участвовать?
⚡️ Быть или стать партнёром BETERA PARTNERS
⚡️Подтвердить желание участвовать
⚡️Приводить квалифицированные FTD в период с 05.08 по 31.09.2026
Пока другие думают — можно уже лить, зарабатывать и забирать свой подарок 😉
Почему партнёры выбирают BETERA PARTNERS:
⭐️ CPA / RevShare / Hybrid / Spend
⭐️ CPA от $150 — как на Tier-1 😉
⭐️ Собственный продукт с локальной лицензией
⭐️ Без KPI
⭐️ Прозрачные условия и быстрые выплаты
Следите за новостями в нашем Telegram-канале, а если нужна помощь с запуском или есть вопросы, залетайте в наш support и пишите нашим менеджерам, всё подскажем!

Betera Partners // Support 🔥
@TLBetera
@KattiBetera
@DaniilTrafficBetera
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Я ненавижу арбитраж
Что за помойка?

Спросите вы, и будете правы.

Новое пространство успешных бизнесменов открылось пару дней назад. Канал сразу захватил арбитражный интернет. Миллион (!) активных и заряженных предпринимателей атаковали его подписками.

Создатель — самый успешный из них. Человек-розыгрыш, человек-споирт, человек-холст, человек-деньги — Евгений Иванов.

Ни одного бота не замечено. Лям. Все из сферы. Сам Дуров не обладает такой базой платежеспособной аудитории.

Немного о том, что обсуждается на канале:

— ахуенность админа (пост написан самим админом)
— ничтожность Affpapa
— техники минета в виде аффирмации

Учитывая предпочтения ЕЮ, можно спрогнозировать рубрики: сиськи (самого админа), кейсы (как правило, негативные), вайбкодинг и, конечно, новости с передовой арбитража.

🤡
🤲 подписался
👍 — и скоко тебе заплатили, продажная ты придорожная путана?


Я ненавижу арбитраж |Чат😠
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio ломается не в await, а в границах между I/O, CPU и cancellation

Если в проекте «всё асинхронно», это ещё не значит, что оно масштабируется. В реальности чаще всего путают три вещи: параллельность, конкурентность и неблокирующий I/O. asyncio хорошо работает там, где задачи ждут сеть, диск или таймеры. Как только в корутину попадает тяжёлая CPU-работа, event loop начинает задыхаться.

Есть 4 типовые ошибки:
— забыли вынести CPU-bound кусок в thread/process pool;
— сделали много await подряд там, где нужен gather();
— не закрыли клиент/сессию/соединение и получили утечки;
— игнорируют cancellation, а потом ловят «зависшие» фоновые задачи.

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

Хорошее правило: корутина должна либо ждать I/O, либо быстро делегировать тяжёлую работу наружу. Если это не так — перепишите участок, а не «добавляйте больше async».
Flask ломается не на маршрутах, а на том, как вы смешиваете слои

У Flask есть полезная ловушка: проект легко стартует как один файл, а потом тихо превращается в комок view-функций, SQL и логики авторизации. Если через месяц в код страшно заходить, проблема обычно не в фреймворке, а в отсутствии границ.

Рабочая схема для живого проекта:
— routes держат только HTTP-слой: принять запрос, провалидировать, вернуть ответ;
— service содержит бизнес-логику и не знает про request;
— repository общается с БД или внешним API;
— extensions и config инициализируются отдельно, а не прячутся внутри view.

Еще одна типовая ошибка — хранить состояние в глобальных переменных и надеяться, что «в проде не заметят». Flask сам по себе не спасает от гонок, если вы пишете в модульные переменные, кэшируете «на глаз» или создаете клиент БД в каждом обработчике.

Если нужен проект, который не развалится от второго разработчика, начните с app factory, явной конфигурации и одного правила: view не должен делать больше, чем оркестровать вызовы. Тогда Flask остается быстрым в разработке и не превращается в склад технического долга.
Scrapy ломается не на парсинге, а на мелочах вокруг него: 6 проверок

Scrapy часто считают “просто фреймворком для пауков”, но в проде он падает на одинаковых вещах. За неделю в репах обычно всплывают одни и те же ошибки: не тот selector, дубли, кривой пайплайн, таймауты и слишком жирные ответы от сайта.

— Сначала проверь, что ты выбираешь именно стабильный узел, а не случайный div внутри карточки.
— Дальше смотри на дедупликацию: canonical, query-параметры, пагинация и одинаковые ссылки с разным мусором в URL.
— Если данные “исчезают”, ищи проблему в item pipeline, а не в spider: там часто тихо режутся пустые поля и неожиданные типы.
— Для тяжёлых страниц включай ограничение concurrency и нормальный retry/backoff, иначе ты сам создаёшь себе бан.

Есть наблюдение которое стоит проверить: если Spider работает только на одной странице, почти всегда дело в предположении, что HTML одинаковый. В Scrapy это лечится не магией, а явной проверкой структуры ответа и отдельной логикой на каждый шаблон страницы.

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

Если Scrapy “вроде работает”, но результат плавает, начни с трёх вещей: структура ответа, дедуп, pipeline. Это экономит больше времени, чем любой красивый рефакторинг.
Forwarded from Иванов и арбитраж трафика
This media is not supported in your browser
VIEW IN TELEGRAM
1. Выкатить ни какую он-лайн конфу я естесвенно не выкатил, потерпите

2. После прошлого видео (тык) мой канал теперь имеет юзер @PO_YICA_BRAL

3. Держите вечернее видео, я нажрусь и спать

Чото надо ещё сказать? Ну, можно лишь добавить Настя #MelBet верни деньги, не играй с огнём, со мной лучше не ссориться. Спасибо.

P.S. Бабка-то, похоже, не своей..... см. видео!

С уважением, Иванов Е.Ю!
Пока весь мир смотрел ЧМ, провайдеры делали то, что умеют лучше всего: прикручивали к играм мячи, ворота, футболистов и слово Football.

Мне стало любопытно проверить простую гипотезу: если хайп вокруг ЧМ такой мощный, футбольные игры должны были массово влететь в топы казино.
Не совсем. Хайп — это ещё не билет в топ.

Big Bass Football Bonanza от Pragmatic Play оказался абсолютным монстром дистрибуции: 695 брендов и 626 лобби, почти на 50% впереди ближайшего конкурента.

Но дальше интереснее.

Из глобального топ-10 футбольных тайтлов только 5 слоты. Ещё 4 - instant/casual, один live. Схема «взять слот и нарисовать мяч» d 2026 уже не выглядит такой гениальной.

А деньги при этом были реальные.

У BGaming Soccermania получила: +470% и +308% ставок, а Penalty Duel with Júlio César поднялся со 135-го на 7-е место в категории Crash и вошёл в топ-5 основного лобби.

И вот мой любимый момент: результат сборной вообще не гарантировал результат игре.

Швеция и ЮАР вылетели довольно рано, а их футбольные тайтлы всё равно пробились в локальный топ-20. В Испании, Франции и Аргентине туда вообще вошло сразу по две игры.

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

Больше данных в полном отчёте: https://blask.com/reports/football-titles/
Forwarded from Serg Accs
🎁 РОЗЫГРЫШ $2000 ОТ SERG ACCS

🥇 1 место — $1000
🥈 2 место — $700
🥉 3 место — $300

Как участвовать:
1️⃣ Подпишитесь на канал
2️⃣ Нажмите « Участвую»
3️⃣ Получите 1 стартовый билет

Больше билетов:
🛒 Покупки — минимум 1 билет, далее +1 за каждые полные $50 реальной оплаты. Максимум — 50.
👥 Рефералы — +5 за первую подходящую покупку друга и +1 за каждые накопленные $100 его покупок. Максимум — 50.

Общий максимум — 100 билетов.
Чем больше билетов, тем выше шанс. Даже 1 билет участвует.

Призы начислим на баланс в боте SERG ACCS.

Итоги 15.09. Всем удачи! 🔥