关于nodejs 服务中断自动重启

  用nodejs做了一个图片下载的工具,发现不管延迟多少时间下载,一旦图片成千上万张之后,使用http,或者download模块,总是会中间出现几次uncauchException异常,promise似乎也无法捕获,导致系统直接挂掉。最终也没有办法解决,只能转而求其次,在系统宕掉之后自动重启服务,继续下载。于是使用了nodejs的child_process做了一个简单的实现:

下面是测试demo。

// start.js
test();
function test() {
    console.log("服务进行中。。。");

    setTimeout(function () {
        console('模拟各种异步业务逻辑。。。');
        //业务正常执行完成,系统退出。
        process.exit(0);
    },1000);
}

  

//auto.js
//自动重启

let process = require('child_process');
let fs = require('fs-extra');
let ChildProcess  = process.fork('./start.js');

ChildProcess.on('exit',function (code) {
    console.log('process exits + '+code);
    fs.appendFileSync('./log.txt','线程退出');
    if(code !== 0){
        process.fork('./auto.js');
    }

});

  

最后,配置一下windows的命令文件:

//autoStart.bat 


@echo off
node auto.js
@pause

  

点击改文件,或者直接打开cmd,运行 node auto.js后,系统正常退出,不会重启。

 

修改start.js  代码,

// start.js
test();
function test() {
    console.log("服务进行中。。。");

    setTimeout(function () {
        console('模拟各种异步业务逻辑。。。');
        let c= a.b;// 这里a undefined.所以会报错
        //业务正常执行完成,系统退出。
        process.exit(0);
    },1000);
}

  此时。系统会一直重启重启。。。

posted @ 2017-12-01 17:02  _风的线条  阅读(3815)  评论(0编辑  收藏  举报