Комментарии 9
Совет для тех кому предстоит запускать много друг от друга зависящих заданий через crontab посмотреть в сторону luigi, dagster, Apache Airflow.
Отправил техдиру почитать 👍
в случае перезагрузки сервера, прерванные задания должны начать свою работу заново
А если задания неидемпотентны?
Тут сложнее, ваши кейсы могут быть сложнее, чем мой совет ниже.
В нашем случае стараемся делить задачи на такие блоки, которые можно "дернуть ручкой" на предыдущий этап. То есть, задание проверяет входные данные и может выйти на рекурсию на Х шагов назад. Разумеется, что число таких шагов тоже надо считать и разбирать каждый случай.
Все-таки мне странно что ничего готового не нашли.
Как замена крону - https://www.rundeck.com/,
для мониторинга крона я использовал https://deadmanssnitch.com/docs/cron-job-monitoring , https://healthchecks.io/
Все было лет пять назад, так что може быть устарело.
HealthChecks как раз первый в списке, но он observer, а надо было побольше всего.
Второй сервис тоже был, но он тоже про анализ падения, а нам на старте надо было увязать задания друг за дружкой. Алерт успешного выполнения мы уже проходили простым сообщением, человек ручками запускал следующий скрипт. А надо вебхук дернуть, хотя бы.
RunDeck посмотрел сейчас, кажется мощным оркестратором сложных интеграций, который в том числе решает вопросы с cron'ом. В первом приближении кажется, что он так же будет тяжелым для решения узкой задачи.
Бережное отношение к загрузке сервера (CPU, RAM) стояло у нас в критериях высоко. Забыл об этом упомянуть в статье.
Ну и досадный момент — опенсорс нам зарубили в какой-то момент волевым решением, пришлось решать вопросы привычным методом.
А я просто в под каждое задание держу файл с его текущим статусом.
Запущен, работает, выполнено.
И если где-то нужно, то смотрю в файл соседнего задания, чтобы дождаться нужного момента.
Также держу одно задание, независимое от кода проекта, которое контролирует эти файлы и пишет мне в телегу, если, например, в каком-то из них слишком долго "выполняется".
Это я так очень кратко логику постарался объяснить. Не знаю, никто не учил, мне вроде бы работает. Проекты тоже тяжелые достаточно. Парсинги, маркетплейсы

Как мы устали настраивать Crontab и сделали свой cron-manager