Nas*_*ade 4 cluster-computing node.js
我正在使用node.js集群模块来创建工作进程.我在fork它时在每个worker的环境中设置一个自定义变量.
我需要在工作者死亡时读取该自定义变量,但是当工作者死亡时,我无法再访问其环境对象.
这是我到目前为止所尝试的:
var cluster = require('cluster'),
os = require('os');
if (cluster.isMaster) {
cluster.on('exit', function (worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
var x = {
workerId: worker.process.env.workerId // This is undefined.
};
cluster.fork(x);
});
for (var i = 0; i < os.cpus().length; i++) {
var x = {
workerId: i
};
cluster.fork(x);
}
}
else {
console.log("workerId: ", process.env.workerId);
// simulate an exeption:
throw "fakeError";
}
Run Code Online (Sandbox Code Playgroud)
我知道这不会起作用,我的问题是:如何在死亡之前获得工人的最新状态?
似乎env只设置在worker的进程中,并且无法在master中访问.大师只有关于工人过程的原始信息.你可以做你想做的事:
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
var env = {workerId: i},
newWorker = cluster.fork(env);
newWorker.process.env = env;
}
cluster.on('exit', function (worker, code, signal) {
console.log('worker ', worker.process.env.workerId, ' died');
var env = worker.process.env,
newWorker = cluster.fork(env);
newWorker.process.env = env;
});
Run Code Online (Sandbox Code Playgroud)
我希望它对你有所帮助.每当工作人员更改他们的环境时,他们应该向主人发送消息并告知其有关这些更改,因此,主人可以更新其信息.
| 归档时间: |
|
| 查看次数: |
2147 次 |
| 最近记录: |