Botxona

Сон и пробуждение бота (scale-to-zero)

Многими Telegram-ботами в течение дня пользуются редко. Поэтому Botxona при необходимости усыпляет неактивных ботов — контейнер полностью останавливается, ресурсы сервера освобождаются — и будит бота за несколько секунд, когда приходит новое сообщение.

Как это работает

Бот, который не получает обновлений, продолжает работать, пока памяти на сервере достаточно («тёплое» состояние), и отвечает на сообщение сразу — за доли секунды. Неактивные боты усыпляются (статус «sleeping») только тогда, когда серверу нужны ресурсы (RAM): первым — тот, кто дольше всех бездействует, и никогда не раньше чем через 10 минут бездействия. Когда пользователь пишет спящему боту или нажимает кнопку, система принимает это и заново запускает контейнер — это занимает несколько секунд (у ботов на Python/aiogram примерно 3–6 секунд), после чего сообщение доставляется боту; обновления не теряются.

Режимы работы

На странице бота в разделе Настройки → Режим работы можно выбрать один из трёх вариантов:

  • Авто (по умолчанию) — если в коде не найдены запланированные задачи (scheduler), бот может быть усыплён, когда серверу не хватает памяти (не раньше чем через 10 минут бездействия); если найдены — бот автоматически становится «всегда включённым».
  • Всегда включён — бот никогда не засыпает. Нужен для фоновых задач вроде отправки напоминаний или ежедневных отчётов.
  • Сон — даже при наличии планировщика бот всё равно засыпает при бездействии. Учтите: в этом случае запланированные задачи (например, «каждый день в 09:00 отправлять сообщение») могут быть пропущены, потому что бот в этот момент может не работать.

Как определяется планировщик?

На этапе проверки система автоматически ищет в коде библиотеки, работающие по расписанию, — APScheduler, node-cron, setInterval, в Go — time.NewTicker, time.Tick(, robfig/cron, go-co-op/gocron, а также JobQueue и подобные. Если они найдены, бот помечается как «нужен always_on» и в режиме «Авто» остаётся всегда включённым — этим можно управлять и вручную через поле always_on в botxona.yaml.

На тарифе Business — всегда включён

Боты на тарифе Business всегда включены независимо от настроек — это одно из главных преимуществ тарифа (важно, например, для ботов, принимающих оплату или заказы, где значение имеют каждая миллисекунда и непрерывность работы).

Почему это важно?

Боты в режиме «всегда включён» постоянно занимают ресурсы сервера. А большинством ботов пользуются время от времени — поэтому усыпление неактивных ботов, когда память сервера заканчивается, позволяет держать тысячи ботов на недорогом сервере. Пока памяти хватает, боты остаются активными; уснувший бот может ответить на первое сообщение с задержкой в несколько секунд.

Следующий шаг

Другие возможности панели управления: Обзор панели управления.