04-01-2026 · projects/cronator.md

Cronator: когда cron начинает болеть

У каждого, кто немного занимается автоматизацией, в какой-то момент появляется папка со скриптами. Бэкапы баз данных, отчёты по расписанию, синхронизация данных, уведомления, чистка логов. Всё это работает через crontab — и работает нормально, пока не перестаёт.

Проблема с cron не в том, что он плохой. Проблема в том, что он молчит. Скрипт упал в три ночи с ошибкой импорта — ты об этом узнаешь утром, когда кто-то спросит, почему отчёт не пришёл. Или не узнаешь вообще. Добавляешь логирование в каждый скрипт — становится лучше, но теперь логи в пяти разных местах. Virtualenv не активировался — скрипт молча запустился с системным Python и упал на импорте. Два скрипта запустились одновременно — получил гонку данных.

Я смотрел в сторону Airflow и Prefect. Но это совсем другой масштаб: оркестраторы с DAG-ами, операторами, концепцией pipeline. У меня не пайплайны — у меня просто десяток скриптов, которым нужно надёжно запускаться по расписанию и сигнализировать, если что-то пошло не так.

Так появился Cronator.

Идея простая: веб-интерфейс для управления Python-скриптами по расписанию. Каждый скрипт живёт в своём изолированном virtualenv с выбранной версией Python. История запусков с stdout/stderr. Email-оповещение при падении. Защита от одновременных запусков. Всё в одном docker compose up.

Под капотом — FastAPI на бэкенде, React с Tailwind на фронтенде, APScheduler для расписания, PostgreSQL для хранения истории. Для изоляции скриптов используется uv — он создаёт virtualenv быстро и предсказуемо, без сюрпризов с путями.

git clone https://github.com/aa-blinov/cronator
cd cronator
docker compose up -d

Открываешь браузер, добавляешь скрипт, выставляешь cron-выражение — готово. Если упадёт, придёт письмо. История хранится, можно посмотреть что вывел скрипт и сколько времени занял.

Я не ставил цель сделать продукт. Ставил цель — перестать бояться, что скрипт упал и никто не знает. Теперь не боюсь.

Есть 19 встроенных шаблонов — мониторинг, бэкапы, уведомления, обслуживание данных. Если своих скриптов ещё нет, можно начать с них. Но обычно они уже есть — просто разбросаны по серверам без надзора.

Cronator заполняет конкретную нишу: больше чем cron, меньше чем Airflow. Для тех, у кого не DAG-и, а просто скрипты.

Есть и другой угол. Мы движемся в сторону мира, где автономные агенты сами ставят себе задачи и сами их исполняют. Cronator — это переходный этап: рутинное можно уже отдать на автоматизацию, а контроль над тем, что действительно важно, остаётся в руках через нормальный интерфейс. Не crontab в терминале и не чёрный ящик агента — а что-то посередине, где ты видишь что происходит и можешь вмешаться.