2015-05-22 49 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

我已經複製了您的問題,發現如果在process.exit之前發生某些延遲(1秒),將永遠成功地重新啓動您的進程。 它看起來永遠不會重新啓動過程,當它崩潰太快。

setTimeout(function() { 
    process.exit(1); 
}, 1000); 
相關問題