foreverjs переводит процесс в состояние STOPPED вместо перезапуска
Я имею nodejs
процесс, который прослушивает соединение. Я хочу позволить foreverjs
перезапустите его при любой ошибке подключения следующим образом:
amqpConnection.on('error', function (err) {
console.error(err);
process.exit(1);
});
Но это не работает. После ошибки я вижу свой процесс в таком состоянии:
~> forever list
info: Forever processes running
data: uid command script logfile
data: [0] OpQF /usr/bin/node my-script.js my-script-log.log STOPPED
Файл журнала имеет ошибку соединения и две попытки перезапустить скрипт.
error: Script restart attempt #2
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' }
error: Forever detected script exited with code: 1
Почему навсегда перестает пытаться перезапустить мой процесс?
2 ответа
Я должен был прочитать предупреждения о том, что forever
печатает!
Сценарий, который не работает больше, чем --minUptime
(1000 мс по умолчанию) считается "вращающимся". Нужно установить --spinSleepTime
сделать вращающиеся скрипты для перезапуска. Если этот параметр не указан, вращающийся скрипт не будет перезапущен.
Я воспроизвел вашу проблему и обнаружил, что навсегда успешно перезапустите ваш процесс, если произойдет некоторая задержка (1 секунда) перед процессом. Exit. Похоже, что вечно не перезапускай процесс, когда он падает слишком быстро.
setTimeout(function() {
process.exit(1);
}, 1000);