foreverjs将进程置于STOPPED状态而不是重新启动

时间:2015-05-22 03:25:56

标签: node.js forever

我有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 个答案:

答案 0 :(得分:3)

我应该阅读forever打印的警告!

运行速度超过--minUptime(默认为1000毫秒)的脚本被视为“旋转”。应该设置--spinSleepTime以重新启动旋转脚本。省略此参数时,不会重新启动旋转脚本。

答案 1 :(得分:2)

我已经重现了您的问题,并发现如果在process.exit之前发生一些延迟(1秒),则永远会成功重启您的进程。 它看起来在崩溃太快时永远不会重启。

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