關於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);
}

  此時。系統會一直重啟重啟。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM