在群集时防止多个控制台日志记录输出

时间:2015-09-01 13:46:15

标签: node.js cluster-computing v8

我正在使用cluster模块nodejs

以下是我设置的方法:

var cluster = require('cluster');
if (cluster.isMaster) {
  var numCPUs = require('os').cpus().length;
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
}else{
     console.log("Turkey Test");
}

现在,我正在PC上分配6个线程(6个核心)。因此,在调试我的应用程序并从控制台读取数据时,将显示:

无论有多少群集正在运行,无论如何都只能使console.log输出一次?

1 个答案:

答案 0 :(得分:2)

您可以使用这样一个事实:您可以与工作人员进行通信,并发送一条消息,告诉每个工作人员是否应该记录。您发送它以便只有一个工作人员(例如第一个工作人员)应该记录:

var cluster = require('cluster');
if (cluster.isMaster) {
  var numCPUs = require('os').cpus().length;
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork().send({doLog: i == 0});
  }
}else{
  process.on('message', function(msg) {
    if(msg.doLog) {
      console.log('Turkey Test');
    }
  });
}