Telethon мастерская
Telethon мастерская
@telethon_workshops_ubt

Тысячи Telethon-сессий не масштабируются файловой кучей — нужна база

Тысячи Telethon-сессий не масштабируются файловой кучей — нужна база

Файлы сессий работают, пока их десятки. Дальше начинается хаос: гонки за файл, потерянные записи, неудобный бэкап и невозможность быстро понять, какой аккаунт жив, а какой уже словил RPC-ошибку. Если нужен пул из сотен или тысяч клиентов, сессия должна стать записью в БД, а не артефактом на диске.

Базовая схема простая: отдельная таблица для аккаунта, отдельная для состояния подключения, отдельная для метаданных. Храните session string, api_id, phone, proxy, flags, last_seen, flood_lock. Не смешивайте авторизацию и рабочие параметры в одном поле — потом невозможно нормально делать ротацию и аудит.

Ключевой момент — жизненный цикл. Перед стартом берёте запись, проверяете lock, поднимаете клиент, пишете heartbeat, после завершения снимаете lock и фиксируете ошибку, если была. Так вы избегаете двойного запуска одной и той же сессии и не ловите конфликтные подключения. Для очередей задач пригодны статусы: ready, busy, banned, cooldown, dead.

Индексы решают половину проблемы: по status, last_seen, proxy_id, flood_lock. Без них выборка «дай мне 200 свободных аккаунтов» превращается в медленный скан. Дебаг — наш лучший друг в борьбе с FloodWait: логируйте причину остановки, длительность блокировки и контекст запроса, иначе БД станет просто складом мусора.

Оптимизируем сессии, избегаем лимитов. Если архитектура не умеет быстро отметить состояние аккаунта и вернуть его в пул, она не масштабируется, даже если крутится на мощном сервере.
Этот пост опубликован в Telegram-канале Telethon мастерская. Подписаться можно по ссылке: @telethon_workshops_ubt.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @AFFtop_connect. Быстрый тест: $20 за канал, $1000 за пакет по сети.