跳到主要内容
CNode

node以cluster模式启动2个进程,函数执行2次怎么解决?

问答
Mmuzi-xiangxiang发布于 9 年前最后回复 9 年前
858850
//定时任务每天执行
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)

A
aofong#89 年前
if(cluster.isMaster){
    //在主进程下支持逻辑
}
M
muzi-xiangxiang#79 年前
引用 leim写一个crontab,用curl触发http接口,来触发这个定时任务

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

M
muzi-xiangxiang#69 年前
引用 fantasticsoul你可以在isMaster那段逻辑里写的啊

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

L
leim#59 年前

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

F
fantasticsoul#49 年前

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

M
muzi-xiangxiang#39 年前
引用 nobody定时任务单独启动

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

N
nobody#29 年前

定时任务单独启动

N
nullcc#19 年前

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

参与回复

登录后即可参与回复。登录