Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать Когда я писал своего первого более-менее серьезного бота под Max, случилась классика. Я и мой ИИ-ассистент (Cursor) пишем код, строго опираясь на официальную документацию Max API. Запускаю — падает. Сижу по 5-6 итераций, пытаюсь отдебажить базовый функционал, который под ту же Телегу пишется с закрытыми глазами. В какой-то момент меня это достало. Я понял, что проблема не во мне и не в галлюцинациях нейронки. Я просто включил логирование всех входящих POST-запросов и стал дампить реальные вебхуки, которые прилетают от серверов Max. Открыв логи, я понял, почему мы так долго буксовали: то, что написано в документации, и то, что прилетает по факту — это две большие разницы. А слепая привычка писать архитектуру под Telegram Bot API делает только хуже. Различия с официальной документацией Max API (Docs vs Реальность) Вскрываем реальные вебхуки Max API

https://habr.com/ru/articles/1005282/

#python #template #boilerplate #chatbot #aiohttp #asyncio #maxapi #maxmessenger #telegram #telegram_bots

Как я устал дебажить MAX API, отреверсил их вебхуки и отучил Cursor галлюцинировать

Когда я писал своего первого более-менее серьезного бота под Max, случилась классика. Я и мой ИИ-ассистент (Cursor) пишем код, строго опираясь на официальную документацию Max API. Запускаю — падает....

Хабр

Анализируем MLP сообщество на Пикабу или как я спарсил 65 тысяч постов с Pikabu и построил интерактивный дашборд

Дело было вечером, делать было нечего... Я, как и многие в IT, периодически просматриваю вакансии, чтобы держать руку на пульсе рынка. И знаете, что бросается в глаза? Огромное количество позиций "Аналитик данных". Хоть это и не моя основная специализация (я больше по ML), теоретическая база у меня есть. И вот я подумал: а как бы мне сделать интересный пет-проект в этой области, чтобы и навыки прокачать, и самому не заскучать?

https://habr.com/ru/articles/968106/

#python #парсинг #data_analysis #streamlit #дэшборд #пикабу #aiohttp #визуализация_данных #петпроект #plotly

Анализируем MLP сообщество на Пикабу или как я спарсил 65 тысяч постов с Pikabu и построил интерактивный дашборд

Главная дэшборда Вступление Дело было вечером, делать было нечего... Я, как и многие в IT, периодически просматриваю вакансии, чтобы держать руку на пульсе рынка. И знаете, что бросается в глаза?...

Хабр

The #python library #aiohttp uses #yarl for URLs internally, and yarl normalizes URLs by default. It silently decodes some %-encoded characters in the query string that do not strictly need to be encoded.

Sounds harmless, but it isn't. Changing the URL breaks any protocol that signs important aspects of a HTTP request for security.

Took me a while to find this bug. I usually expect an HTTP client library to not silently manipulate the URLs before sending a request. Smarter is not always better

Почему простой парсер не всегда решает задачу: мой опыт интеграции спортивных API

В рамках собственной системы спортивной аналитики я хотел получить real-time доступ к данным о движении коэффициентов — в частности, с платформы pickingodds.com. У сервиса интересная фича — визуализация графика изменения линии по каждому событию. Это потенциально полезный источник вторичных сигналов (например, для обнаружения аномалий, связанных с резкой коррекцией маркет-мейкеров). Изначальный план был прост: интегрироваться по REST API, выкачивать данные раз в несколько минут, писать в TSDB, использовать далее для анализа и фичей в ML-пайплайнах. На практике же всё быстро ушло в зону нетривиальной оптимизации.

https://habr.com/ru/articles/930360/

#pickingodds #коэффициенты_ставок #асинхронный_парсинг #rate_limiting #aiohttp #Redis #Kafka #TimescaleDB #LightGBM #ML_фильтрация_событий

Почему простой парсер не всегда решает задачу: мой опыт интеграции спортивных API

Контекст В рамках собственной системы спортивной аналитики я хотел получить real-time доступ к данным о движении коэффициентов — в частности, с платформы pickingodds.com. У сервиса интересная фича —...

Хабр

Асинхронный Telegram бот на PyTelegramBotAPI

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

https://habr.com/ru/articles/929990/

#туториал #асинхронность #python #telebot #telegram #aiohttp

Асинхронный Telegram бот на PyTelegramBotAPI

В сети куча туториалов по синхронным ботам и почти ничего по асинхронным. Статья нацелена на новичков в асинхронном программировании в целом и в асинхронных ботах в частности. В этой статье не будет...

Хабр

State of client side HTTP in #python

- stdlib http.client - HTTP/1.1 only, docs recommend to use requests instead.
- requests - poorly maintained, in 2020 stopped working when servers deprecated older TLS versions. HTTP/1.1 only, sync only
- #httpx - comparatively slow and API design is driven by compatibility with browsers. Some users plug-in aiohttp for better performance. Supports HTTP/2 but it's discouraged as not optimized.
- #aiohttp - good API, both client and server but seems more focused on the server side; HTTP/1.1 only.
- #niquests - async fork of requests with HTTP/2, but uses forked urllib3 with the same package name as the original, which messes up deployment.
- #aioquic - client & server, HTTP/3 only

🤦

#pythonRequests #programming

Оптимизация асинхронного сервиса на Python

Всем привет! Сегодня хочу поделиться с вами нашим опытом ускорения асинхронного микросервиса на Python примерно на 25%. Я расскажу, какие действия мы предпринимали с командой, что помогло, а что оказалось не особенно полезно с точки зрения ускорения сервиса. Небольшое предисловие: мы в Иви постоянно работаем над тем, чтобы наши сервисы отвечали быстро и их максимальная предельная нагрузка повышалась. В процессе очередного анализа сервисов, мы выяснили, что один из них, о котором пойдет речь в статье, отвечает довольно медленно, учитывая его особенности. И мы решили его ускорять.

https://habr.com/ru/companies/ivi/articles/920850/

#python #asyncio #aiohttp #асинхронное_программирование #телеметрия #оптимизация #время_ответа #профилирование #orjson

Оптимизация асинхронного сервиса на Python

Всем привет! Сегодня хочу поделиться с вами нашим опытом ускорения асинхронного микросервиса на Python примерно на 25%. Я расскажу, какие действия мы предпринимали с командой, что помогло, а что...

Хабр

Я устал от ограничений Strava и написал свой «швейцарский нож» для анализа тренировок на Python и FastAPI

Всем привет! Я — разработчик и велосипедист, которому надоели ограничения Strava. Знакомы боли: GPS‑треки с «телепортами», платный анализ по зонам и неудобная загрузка сегментов на Garmin? Я решил исправить это и написал свой «швейцарский нож» для анализа тренировок. Под катом — история создания pet‑проекта Peakline на Python, FastAPI и Vanilla JS. Расскажу, как устроен продвинутый FIT‑генератор для гонок с «призраком», как визуализировать исправление «сломанных» GPX‑треков и как заставить график и карту работать в связке. Поделюсь фрагментами кода, архитектурными решениями и подводными камнями при работе с API Strava. Узнать, как это сделано

https://habr.com/ru/articles/920402/

#strava #fastapi #python #garmin #fit #gps #gpx #api #aiohttp

Я устал от ограничений Strava и написал свой «швейцарский нож» для анализа тренировок на Python и FastAPI

История о том, как боль от «телепортов» в GPS‑треках, платных зон и неудобного создания файлов для Garmin привела к рождению pet‑проект а, который немного вышел из-под контроля. Разбор...

Хабр

Я устал от ограничений Strava и написал свой «швейцарский нож» для анализа тренировок на Python и FastAPI

Всем привет! Я — разработчик и велосипедист, которому надоели ограничения Strava. Знакомы боли: GPS‑треки с «телепортами», платный анализ по зонам и неудобная загрузка сегментов на Garmin? Я решил исправить это и написал свой «швейцарский нож» для анализа тренировок. Под катом — история создания pet‑проекта Peakline на Python, FastAPI и Vanilla JS. Расскажу, как устроен продвинутый FIT‑генератор для гонок с «призраком», как визуализировать исправление «сломанных» GPX‑треков и как заставить график и карту работать в связке. Поделюсь фрагментами кода, архитектурными решениями и подводными камнями при работе с API Strava. Узнать, как это сделано

https://habr.com/ru/articles/920402/

#strava #fastapi #python #garmin #fit #gps #gpx #api #aiohttp

Я устал от ограничений Strava и написал свой «швейцарский нож» для анализа тренировок на Python и FastAPI

История о том, как боль от «телепортов» в GPS‑треках, платных зон и неудобного создания файлов для Garmin привела к рождению pet‑проект а, который немного вышел из-под контроля. Разбор...

Хабр