@kablihin

Как синхронизировать два запроса cron?

Есть два запроса cron(использую node-cron), которые выполняют по разному расписанию, время работы может быть разный. Необходимо сделать ожидание для одного крона, пока не выполнится другой. То есть если в данный момент выполняет другой запрос крон, ожидаем пока, он закончится.
Вопрос: есть ли какие встроенные способы(мьютексы или что-то такое) для реализации этого?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
@pfg21
ex-турист
крон простотой и функциональностью напоминает каменный топор.
мудри на файловых флагах в /run
Ответ написан
Комментировать
@rPman
Очевидно, что cron-стайл не решит твою задачу, что самое грустное, задача на столько простая, что решать ее сторонними инструментами и библиотеками - странно.

Мне кажется мочь запилить свой time-task-execute сервис должен каждый программист, начинающий карьеру.

99% работы по созданию своего сервиса - это управление временными интервалами, т.е. способ, с которым пользователь управляет своими задачами и задает время. Т.е. нет никаких проблем, чтобы сделать приложение, читающее конфиг (текстовые файлы или база данных, не важно) и организующее набор слипов (кода строк 5-10 где то - ищем ближайшую задачу, которая должна быть выполнена, делаем sleep на этот интервал, исполняем задачу, повторить).

Так вот твоя задача в твоем сервисе реализуется очень просто - запуская приложение по таймеру, сервис просто должен дождаться окончания ее работы, запустить так все задачи, отмеченные на исполнение (тут сервис должен искать не одну какую то задачу, которая должна исполниться, а все, чей срок на запуск наступил, не важно когда сейчас или в прошлом) и только после этого снова проанализировать список задач из конфига и отправить на выполнение следующий список задач. В такой реализации частота запуска задач не будет соответствовать конфигу (т.е. они могут опаздывать) но задача будет гарантированно выполнена (в других схемах возможна ситуация, когда время выполнения задачи из-за опоздания никогда не наступит)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы