node以cluster模式启动2个进程,函数执行2次怎么解决?
 发布于 8 年前  作者 muzi-xiangxiang  5612 次预览  最后一次回复是 8 年前  来自 问答 
//定时任务每天执行
var rule = new schedule.RecurrenceRule();
rule.hour = 7;//时
rule.minute = 55;//分
rule.second = 50;//秒

var j = schedule.scheduleJob(rule, function () {
  getAllUserFromDD().then(function (result) {
    return sendInfoToUser(result);
  }).then(function (status) {
    if (status == 'null') {
      console.log('今天没有匹配数据');//看日志发现这句打印了2次,这说明定时函数执行了2次,怎么让他只执行一次?
    }
  });
});

image.png

8 回复
nullcc

你只启动一个进程不就好了

nobody

定时任务单独启动

muzi-xiangxiang

@nobody 好吧, 我现在是记录启动次判断

fantasticsoul

你可以在isMaster那段逻辑里写的啊

leim

写一个crontab,用curl触发http接口,来触发这个定时任务

muzi-xiangxiang

@fantasticsoul 不知道怎么判断啊,没有头绪

muzi-xiangxiang

@leim 没有写http接口,直接使用schedule定时执行函数

aofong
if(cluster.isMaster){
    //在主进程下支持逻辑
}