Telethon мастерская
Telethon мастерская
@telethon_workshops_ubt

Почему Telethon тормозит не из-за сети, а из-за неправильной архитектуры asyncio

Почему Telethon тормозит не из-за сети, а из-за неправильной архитектуры asyncio

Telethon сам по себе асинхронный, но это не значит, что любой код вокруг него безопасен. Типовая ошибка — запускать тяжёлые циклы, синхронные запросы и блокирующие библиотеки прямо в event loop. В итоге ловим задержки, пропуски апдейтов и странные RPC-ошибки, которые маскируют реальную причину.

Базовые правила:
• один client — один управляемый loop;
• I/O не блокируем: файлы, БД, HTTP уносим в async-обвязку или executor;
• длинные задачи дробим через create_task, но контролируем их количество;
• для последовательных операций используем семафор, иначе упираемся в FloodWait и очередь апдейтов.

Отдельно следите за обработчиками событий. Если внутри on_new_message сделать тяжёлую обработку текста, парсинг и отправку пачки ответов, loop начнёт деградировать. Правильнее быстро принять апдейт, положить задачу в очередь и обработать её отдельно, с retry и логированием. Дебаг — наш лучший друг в борьбе с FloodWait.

Ещё один частый провал — смешивание asyncio.run() и уже запущенного цикла. В Telethon это почти всегда признак неправильной точки входа. Стартуйте клиент один раз, держите жизненный цикл явно и не пересоздавайте сессии без причины. Оптимизируем сессии, избегаем лимитов.
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.