node以cluster模式启动2个进程,函数执行2次怎么解决?
发布于 7 年前 作者 muzi-xiangxiang 5009 次浏览 来自 问答
//定时任务每天执行
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 回复

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

定时任务单独启动

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

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

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

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

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

if(cluster.isMaster){
    //在主进程下支持逻辑
}
回到顶部