2016-12-08 8 views
0

Как определить, запущено ли задание с задержкой или нет в фоновом режиме на этапе. Если он остановлен, значит, он должен запускаться, проверяя некоторый процесс pid или что-то в этом роде. Моя проблема заключается в постановке задержки с задержкой задания иногда, и я не могу понять, почему это происходит, может ли кто-нибудь сказать мне, что я могу сделать, чтобы решить эту проблему. Это команда я проверить для проверки статусаRails delayed jobs останавливается при постановке

RAILS_ENV=staging ./script/delayed_job status 

, но мне нужно сделать то, что должен проверить автоматически, работает ли задерживается работа или нет, не .Если он должен начать работать

+0

ИМО это не обязанность приложения для контроля и запуска внешних процессов. Я бы предложил использовать [инструмент мониторинга] (https://www.ruby-toolbox.com/categories/server_monitoring), например, god или bluepill, чтобы отслеживать, что все необходимые процессы запущены и работают. – spickermann

ответ

1

Создайте файл сценария оболочки в корневом каталоге и поместите этот код.
Затем дать разрешения на файл

ps_out=`ps -ef | grep delayed | grep -v 'grep' | grep -v $0` 
result=$(echo $ps_out | grep "$1") 
if [[ "$result" != "" ]];then 
    echo "Running" 
else 
    /path-to-your-project/delayed_job start 
fi 

Теперь добавьте это в кронтаб

crontab -e 
0

Для того, чтобы контролировать, если (и, возможно, перезапустите его), используйте что-то вроде god.

Если ваши фоновые задания умирают, вы должны увеличить объем логов и, возможно, использовать удаленный исключающий исключатель, например Airbrake.

Есть десятки альтернатив для обоих, пожалуйста, сделайте собственное исследование.

Чтобы вручную проверить, есть ли запущенный процесс, используйте

> ps aux 

или верхней или Htop перечислить существующие процессы.