FloodWaitError в Telethon возникает, когда аккаунт упирается в серверный лимит. Лечится это не retry-спамом, а дисциплиной: ловим исключение, читаем wait-секунды и ставим паузу именно на этот срок. Игнорировать его — значит получить цепочку повторных ошибок и лишнюю нагрузку на сессию.
Базовая схема обработки:
— в try/except ловим FloodWaitError отдельно от остальных RPCError
— берем e.seconds и спим ровно столько, сколько запросил API
— после ожидания повторяем операцию один раз, без бесконечного цикла
— если лимит прилетает снова, снижаем частоту запросов или меняем стратегию работы
Для массовых сценариев важнее не обработчик, а архитектура. Не шлите пачку однотипных запросов подряд: ставьте очередь, джиттер между действиями и ограничение concurrency. Разбираем логи ошибок: что пошло не так на стороне API? Если FloodWait идет на одном и том же методе, значит узкое место в паттерне вызовов, а не в Telethon.
Отдельно следите за сессиями и прокси: нестабильный IP и резкие прыжки по активности повышают шанс получить лимиты раньше обычного. Дебаг — наш лучший друг в борьбе с FloodWait: логируйте метод, параметры и длительность ожидания, иначе вы будете лечить симптом, а не причину. Оптимизируем сессии, избегаем лимитов.
Telethon мастерская
@telethon_workshops_ubt
FloodWaitError — не баг, а сигнал: как не сжечь сессию на лимитах
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.