Тысячи Telethon-сессий не масштабируются “в памяти” — нужен нормальный слой хранения
Когда скрипт держит десятки или сотни аккаунтов, файл-сессия быстро упирается в хаос: конкурирующие записи, потеря состояния, ручной бэкап. База данных решает это только если сессия — не “blob”, а набор полей: auth_key, dc_id, user_id, номер телефона, флаги блокировки, метка последней активности.
Схема должна быть простой:
— отдельная таблица sessions;
— уникальный ключ на user_id или phone;
— индексы по status, updated_at, proxy_id;
— транзакция на создание/обновление, чтобы два воркера не перетёрли одну запись.
Критично разделять чтение и запись. Воркеры забирают задачу через lock или статус processing, после выполнения возвращают result и updated_at. Если сессия ловит FloodWait, RPCError или разлогин, это не “ошибка аккаунта”, а состояние, которое тоже пишется в БД и влияет на очередь задач.
Для Telethon полезно хранить рядом и инфраструктурные данные: proxy, fingerprint клиента, лимит попыток входа, время последней синхронизации. Тогда можно пересоздать соединение, поднять воркер на другом хосте и не потерять контекст. Оптимизируем сессии, избегаем лимитов.
Вывод простой: масштабируется не код авторизации, а модель данных вокруг неё. Дебаг — наш лучший друг в борьбе с FloodWait.
Telethon мастерская
@telethon_workshops_ubt
Тысячи Telethon-сессий не масштабируются “в памяти” — нужен нормальный слой хранения
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.