集群时防止多个控制台日志输出
Prevent multiple console logging output while clustering
我正在为 nodejs
使用 cluster
模块。
我是这样设置的:
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
无论有多少簇运行只输出一次?
您可以利用可以与工作人员通信的事实,并发送一条消息告诉每个工作人员是否应该记录。你会发送它,以便只有一个工人(例如第一个)应该记录:
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');
}
});
}
我正在为 nodejs
使用 cluster
模块。
我是这样设置的:
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
无论有多少簇运行只输出一次?
您可以利用可以与工作人员通信的事实,并发送一条消息告诉每个工作人员是否应该记录。你会发送它,以便只有一个工人(例如第一个)应该记录:
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');
}
});
}