2015-05-22 2 views
2

У меня есть nodejs процесс, который прослушивает соединение. Я хочу, чтобы foreverjs перезапустить его на какой-либо ошибки соединения таким образом:foreverjs превращает процесс в состояние STOPPED вместо перезапуска

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

Я воспроизвел вашу проблему и обнаружил, что навсегда успешно перезапустит ваш процесс, если какая-то задержка (1сек) состоится до process.exit. Посмотрите, что навсегда не перезапускайте процесс, если он слишком быстро падает.

setTimeout(function() { 
    process.exit(1); 
}, 1000); 

 Смежные вопросы

  • Нет связанных вопросов^_^