Задать вопрос

Как контролировать работу скриптов-воркеров? Что лучше Crontab?

Здравствуйте,

у меня есть 6 сервисов написанных на PHP и на Golang, которые выполняют одну большую задачу.

Чтобы подзадачи выполнялись последовательно, используем очереди, первый сервис записывает данные в очередь, второй сервис их подхватывает и так далее, 6 сервис завершает цикл и задача считается выполненной.

Сервисы запускаются при помощи crontab, при помощи записи в БД контролируем статус сервиса, чтобы повторно его не запустить, если он еще выполняется.

У этого способа есть минут, все сервисы запускаются раз в минуту.

1-ый запуск сервисов:
  • 1-ый сервис отработал - записал в очередь.
  • 2-ой сервис запустился в холостую.
  • 3-ий сервис запустился в холостую.


2-ой запуск сервисов:
  • 1-ый сервис запустился в холостую.
  • 2-ый сервис отработал - записал в очередь.
  • 3-ий сервис запустился в холостую.


3-ий запуск сервисов:
  • 1-ый сервис запустился в холостую.
  • 2-ой сервис запустился в холостую.
  • 3-ий сервис отработал - задача завершена.


и такая же ситуация с 4,5 и 6 сервисами.

В итоге, до момента когда задача будет завершена и информация будет опубликована на сайте проходит до 7 минут.

Хотел спросить, есть ли способ по лучше по запуску и мониторингу сервисов?

NOHUP с циклом выглядит интересно, но как его контролировать?
Как контролировать что скрипт не умер, что он не запущен несколько раз?

Буду очень признателен, если подскажите, в каком направлении искать решение задачи.
  • Вопрос задан
  • 303 просмотра
Подписаться 2 Простой 1 комментарий
Ответ пользователя Дмитрий Шицков К ответам на вопрос (6)
  • Systemd
  • Supervisord
Ответ написан
Комментировать