我使用cluster.fork()在Node.js中生成工作进程。当我突然发现与启动我的应用程序多次运行的main.js文件相关的奇怪错误时,我的应用程序就开始运行了。这是我的档案:
children.js
const cluster = require('cluster');
if (cluster.isMaster) {
console.log('starting master')
const spawnWorker = function () {
let worker = cluster.fork();
return worker
}
exports.spawn = function (cnt) {
for (let i = 0; i < cnt; i++) {
console.log('spawning worker.....')
spawnWorker()
console.log('worker spawned')
}
}
}
else {
console.log('Worker activity')
}main.js
console.log('Main called')
global.Children = require('./children');
Children.spawn(4)
console.log('Main Finished')运行节点main.js的输出
Main called
starting master
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
worker spawned
spawning worker.....
Main called
Worker activity在这一点之后,我得到一个类型错误,Children.spawn不是一个函数,它说主已完成。
我的问题是,为什么我的main.js被第二次调用?我只想让它创建工作进程,它将依次侦听事件,并在打印“主完成”之后“停止”执行。我很感激你的帮助!
发布于 2018-03-18 22:11:34
这是预期的行为,分叉的是整个过程,而不仅仅是调用cluster.fork()的模块。工作人员从流程开始就开始执行;)
集群模块应该是您的主要入口点。
https://stackoverflow.com/questions/49353194
复制相似问题