我正在使用 cluster.fork() 在 Node.js 中生成工作进程。当我突然开始收到与 main.js 文件相关的奇怪错误时,我的应用程序正常运行,我用来启动我的应用程序多次运行。这是我的文件:
儿童.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')
}
主文件
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 Finished。
我的问题是,为什么我的 main.js 被第二次调用?我只希望它创建工作进程,该进程将在打印“Main Finished”后依次侦听事件并“停止”执行。我感谢任何帮助!
这是预期的行为,分叉的是整个过程,而不仅仅是您调用cluster.fork()
. 工人从流程开始就开始执行;)
您的集群模块应该是您的主要入口点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句