我有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
为什么永远不会再尝试重启我的流程?
答案 0 :(得分:3)
我应该阅读forever
打印的警告!
运行速度超过--minUptime
(默认为1000毫秒)的脚本被视为“旋转”。应该设置--spinSleepTime
以重新启动旋转脚本。省略此参数时,不会重新启动旋转脚本。
答案 1 :(得分:2)
我已经重现了您的问题,并发现如果在process.exit之前发生一些延迟(1秒),则永远会成功重启您的进程。 它看起来在崩溃太快时永远不会重启。
setTimeout(function() {
process.exit(1);
}, 1000);