主文件 运行 多次来自 Node.js 中的工作进程
Main file is run multiple times from worker processes in Node.js
我正在使用 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')
来自 运行ning 节点的输出 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" 后执行 "stop"。感谢您的帮助!
这是预期的行为,分叉的是整个过程,而不仅仅是您调用 cluster.fork()
的模块。工人从流程的开始开始执行;)
您的集群模块应该是您的主要入口点。
我正在使用 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')
来自 运行ning 节点的输出 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" 后执行 "stop"。感谢您的帮助!
这是预期的行为,分叉的是整个过程,而不仅仅是您调用 cluster.fork()
的模块。工人从流程的开始开始执行;)
您的集群模块应该是您的主要入口点。