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

Асинхронный Telethon ломается не на API, а на плохой архитектуре asyncio

Асинхронный Telethon ломается не на API, а на плохой архитектуре asyncio

Telethon сам по себе не ускоряет код. Он просто работает поверх event loop, и если внутри обработчика вы делаете CPU-bound задачи, блокирующий I/O или long polling без await, весь поток замирает. Типовая ошибка: смешать client.run_until_disconnected() с ручным запуском loop, а потом ловить странные зависания и пропущенные события.

База простая:
— все сетевые запросы через await client.send_message(), await client.get_participants();
— тяжелые вычисления выносить в отдельный process/thread, а не в handler;
— для параллелизма использовать asyncio.create_task(), но контролировать число задач через Semaphore.

Отдельно следите за отменой задач и временем ожидания. Если не оборачивать запросы в asyncio.wait_for(), зависшая RPC-вызовка может держать воркер. Если не обрабатывать CancelledError, скрипт не завершит фоновые задачи корректно. Дебаг — наш лучший друг в борьбе с FloodWait.

Для массовых операций важен порядок: сначала сбор данных, потом очередь отправки, потом rate limit на уровне корутин. Так вы не создаете лавину RPC-ошибок и не кладете сессию лишней нагрузкой. Оптимизируем сессии, избегаем лимитов.

Правильный asyncio в Telethon — это не «запустить много задач», а жестко ограничить конкуренцию, не блокировать loop и держать контроль над ошибками в каждом await.
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.
tech

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

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

start

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

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

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