Тысячи сессий в Telethon: как не утонуть в .session-файлах
Когда аккаунтов становится много, файловая свалка ломает и скорость, и контроль. Нормальная схема — хранить метаданные сессий в базе: user_id, phone, proxy, state, last_used, dc_id, hash ключи, статус flood/ban. Сам файл сессии остаётся артефактом Telethon, но управление жизненным циклом уходит в SQL.
Базовая модель простая: отдельная таблица sessions и отдельная таблица tasks. Сессия должна браться в работу через lock/lease, а не по принципу «кто первый открыл файл». Это убирает гонки между воркерами и позволяет безопасно масштабировать парсинг, инвайтинг и рассылки. Если воркер умер — lease истёк, запись вернулась в пул.
Критично хранить не только статус, но и контекст ошибок: FloodWait, RPCError, invalid phone, auth key invalid, proxy fail. По этим полям строится маршрутизация: кого отправить на другой прокси, кого поставить на cooldown, кого пересоздать. Без этой телеметрии база превращается в архив, а не в диспетчерскую.
Практика: индексируйте поля state, last_used и proxy_id; не держите долгие транзакции; отделяйте «живые» сессии от «мёртвых»; чистите дубликаты по phone и device fingerprint. Оптимизируем сессии, избегаем лимитов.
Если нужен устойчивый пул, думайте о сессии как о ресурсе с TTL, а не как о файле на диске. Дебаг — наш лучший друг в борьбе с FloodWait.
Telethon мастерская
@telethon_workshops_ubt
Тысячи сессий в Telethon: как не утонуть в .session-файлах
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.