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);
Другие вопросы по тегам