FloodWaitError — не ошибка, а таймер, который нужно уважать
FloodWaitError в Telethon означает одно: сервер поставил паузу на конкретный метод или аккаунт. Игнорировать её и крутить запросы дальше — прямой путь к повторным RPC-ошибкам, росту задержек и деградации сессии. Здесь важна не «скорость», а дисциплина обработки.
Базовая схема простая:
— ловим исключение отдельно от остальных;
— читаем seconds у FloodWaitError;
— спим столько, сколько просит API, без попыток обойти лимит;
— логируем метод, peer и контекст вызова, чтобы понять, какой участок кода шумит.
Если у вас очередь задач, не блокируйте весь воркер из-за одного FloodWait. Лучше переводить задачу в отложенное состояние и продолжать обрабатывать независимые операции. Для массовых сценариев это критично: один аккаунт может упереться в лимит, а остальные должны жить дальше.
Ошибка новичков — ставить фиксированный sleep на все случаи. У FloodWait нет универсальной задержки: она зависит от действия, частоты и состояния аккаунта. Правильнее строить retry-политику с backoff, отдельными лимитами на метод и защитой от бесконечных повторов. Дебаг — наш лучший друг в борьбе с FloodWait.
Оптимизируем сессии, избегаем лимитов: не лечим FloodWait «магией», а делаем код предсказуемым. Чем точнее логика retry и изоляция задач, тем стабильнее работает автоматизация.
Telethon мастерская
@telethon_workshops_ubt
FloodWaitError — не ошибка, а таймер, который нужно уважать
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.