Тысячи Telethon-сессий не живут в коде — они живут в базе и дисциплине
Если хранить сессии как набор .session-файлов, масштаб быстро ломается: сложно валидировать статус аккаунта, мигрировать между воркерами и контролировать дубли. Нормальная схема — вынести метаданные в БД, а сами session-string или путь к файлу держать как поле сущности.
Базовая таблица должна отвечать на 4 вопроса:
— какой это аккаунт;
— в каком он состоянии: free, busy, banned, cooldown;
— кто и когда взял его в работу;
— где лежит актуальная сессия и прокси.
Дальше работает простая логика: воркер берет запись атомарно, ставит lock с TTL, выполняет задачу и снимает блокировку. Это убирает гонки между процессами и делает retries предсказуемыми. Для массовых операций полезно хранить счетчики FloodWait, количество ошибок RPC и дату последней успешной авторизации — без этого вы не отличите живую сессию от технического мусора.
Не смешивайте бизнес-логику с хранением: отдельный слой для загрузки/сохранения session, отдельный — для распределения задач. Иначе отладка превращается в поиск призраков по логам. Оптимизируем сессии, избегаем лимитов.
Если нужна масштабируемость, проектируйте не «как запустить 1000 аккаунтов», а «как безопасно передать их между воркерами без конфликтов». Тогда база становится не складом, а диспетчером.
Telethon мастерская
@telethon_workshops_ubt
Тысячи Telethon-сессий не живут в коде — они живут в базе и дисциплине
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.