Парсинг участников: как не словить 429
GetParticipants — один из самых ограниченных методов в Telegram API. Лимит примерно 200 участников за запрос, и после нескольких запросов подряд Telethon начнёт получать FloodWaitError.
Обход через итерацию с паузами:
async for user in client.iter_participants(group, aggressive=True):
process(user)
await asyncio.sleep(0.5)
Параметр aggressive=True позволяет получить больше участников из крупных групп, но увеличивает риск блокировки. Используй его только для важных задач, не для рутинного парсинга.
Для групп с сотнями тысяч участников — разбивай на несколько сессий с разными аккаунтами. Каждый аккаунт парсит свой диапазон через offset.
Сохраняй результаты инкрементально — не жди конца парсинга чтобы записать в базу. Если скрипт упадёт на 80% — не захочется начинать заново.
После каждых 1000 участников делай паузу 60–120 секунд. Это снижает риск FloodWait в 3–4 раза по сравнению с непрерывным парсингом.
Telethon мастерская
@telethon_workshops_ubt
Парсинг участников: как не словить 429
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.