2017-01-04 26 views
0

我在sails.js中有項目,我想寫一個輪詢服務,在某個時間間隔內檢查某個記錄,然後發送電子郵件。我的示例代碼是:在node.js中使用sails.js寫輪詢服務框架

module.exports.bootstrap = function(cb) { 
    cb(); 
    var refresh = function() { 
     setTimeout(doWork, //someInterval); 
    }; 

    var doWork = function() { 
     if (//check some condition) { 
      sendEmail(); 
     } 
     refresh(); 
    }; 

    doWork(); 
} 

我使用pm2庫文件並使用集羣模式啓動我的項目。示例代碼是:

pm2 start app.js -i 4 

此命令以4進程的集羣模式運行app.js。 問題是我的輪詢服務在所有進程中運行,因爲我在config/bootstrap.js文件中運行輪詢服務,這非常糟糕。
我的問題是如何在所有過程中運行一次我的服務?

+0

我不認爲這是可能。 –

+0

@MU感謝您的回覆。 –

回答

1

您可以檢查進程是否爲主,然後僅在該情況下運行腳本。

var cluster = require('cluster'); 
if(cluster.isMaster) // rest of your service... 

但對我來說...這是奇怪的邏輯。你應該排隊任務以共享數據庫,當任務彙集從中刪除等

+0

感謝您的回覆..但是當您使用pm2運行時,所有進程都是fork,而不是master。這就是爲什麼這個代碼是不可能的.. –

+0

也許我必須用db來管理它..謝謝 –