2017-01-04 3 views
0

프로젝트가 sails.js에 있습니다. 폴링 서비스를 작성하여 일정 기간 동안 일부 레코드를 확인한 후 이메일을 보내고 싶습니다. 내 예제 코드는 다음과 같습니다sails.js 프레임 워크를 사용하여 node.js의 폴링 서비스를 작성하십시오.

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

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

    doWork(); 
} 

내가 PM2의 libary를 사용하여 클러스터 모드 내 프로젝트를 시작합니다. 예제 코드 :

이 명령은 app.js를 4 프로세스의 클러스터 모드로 실행합니다. config/bootstrap.js 파일에서 내 폴링 서비스를 실행하기 때문에 문제는 내 폴링 서비스가 모든 프로세스에서 실행되며 이는 매우 나쁩니다.
제 질문은 어떻게 모든 프로세스에서 한 번 서비스를 실행할 수 있습니까?

+0

나는 그것이 등을 생각하지 않는다 그것에서 제거 가능한. –

+0

@MU 귀하의 회신에 감사드립니다. –

답변

1

프로세스가 마스터인지 확인한 다음이 경우에만 스크립트를 실행할 수 있습니다.

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

하지만 나를 위해

...이 이상한 논리가 ... 당신은 공유 DB에 작업을 대기해야하고, 작업 풀 때

+0

답장을 보내 주셔서 감사합니다.하지만 pm2로 실행하면 모든 프로세스가 포크이고 마스터가 아닙니다. 그게 왜이 코드는 불가능합니다 .. –

+0

어쩌면 내가 DB를 .. 그것을 관리해야 감사합니다 Logged –