Что это
Планировщик внутри программы на Python: запускает действия в нужное время — напоминание в 9 утра, проверку раз в минуту, отчёт первого числа. В отличие от cron, живёт в самом боте и видит его данные.
Как используем
Напоминает о днях рождения и об окончании подписки, рассылает эскалации и месячный отчёт в тикет-системе, отмечает неявки в электронной очереди. Часовой пояс всегда задаём явно: Europe/Moscow.
Где это нужно бизнесу
- Клиенту нужно напомнить о продлении или о дне рождения заранее, а не в сам день.
- Заявку, на которую никто не реагирует, нужно эскалировать без участия человека.
- Отчёт руководителю должен приходить первого числа сам.
Как мы это используем
- Напоминания. Бот дней рождений раз в день в 9:00 по Москве проверяет даты и пишет за 14, 7, 3 и 1 день; бот продажи подписок в 10:00 напоминает о продлении за 3 суток и за 1 сутки.
- Эскалация и отчёты. В тикет-системе — напоминания о выезде, эскалация, утренний дайджест, месячный отчёт и еженедельный дамп базы.
- Чекин и неявки. В электронной очереди каждую минуту проверяется начало событий, а неявки отмечаются по таймауту.
- Обслуживание. Чистка старых бэкапов в 00:30 и обслуживание базы по понедельникам в 03:00.
Типичные проблемы
- Время хостинга вместо московского. Планировщик и контейнер работают в явно заданном поясе Europe/Moscow, иначе «напоминание в 9 утра» придёт в другое время.
- Проверка раз в минуту может разминуться с событием. В электронной очереди начало события ищется в окне плюс-минус две минуты, чтобы чекин не пропустить.
Когда это не нужно
Для задачи, которая не связана с данными бота — ночной бэкап сервера, ротация логов, — достаточно cron на самом сервере.