节点集群 - 用代码替换 worker.js 文件
Node Cluster - replace worker.js file with code
以下示例来自 Node 文档:
import cluster from 'cluster';
cluster.setupPrimary({
exec: 'worker.js',
args: ['--use', 'https'],
silent: true
});
cluster.fork(); // https worker
cluster.setupPrimary({
exec: 'worker.js',
args: ['--use', 'http']
});
cluster.fork(); // http worker
将应用程序打包成可再分发的二进制文件时,exec: 'worker.js'
是有问题的,worker.js
必须与 exe 一起打包。有没有办法告诉 cluster
查看一段代码?
当然可以。这是不使用新 .setupPrimary
方法时集群的通常行为。可以使用.fork()
的env
参数来传递参数:
import cluster from 'cluster';
if (cluster.isPrimary) {
cluster.fork({use: 'https'});
cluster.fork({use: 'http'});
} else {
if (process.env.use && process.env.use == 'https') {
// code for https worker
} else if (process.env.use && process.env.use == 'http') {
// code for http worker
} else {
console.log("missing 'use' environment variable in worker");
}
}
以下示例来自 Node 文档:
import cluster from 'cluster';
cluster.setupPrimary({
exec: 'worker.js',
args: ['--use', 'https'],
silent: true
});
cluster.fork(); // https worker
cluster.setupPrimary({
exec: 'worker.js',
args: ['--use', 'http']
});
cluster.fork(); // http worker
将应用程序打包成可再分发的二进制文件时,exec: 'worker.js'
是有问题的,worker.js
必须与 exe 一起打包。有没有办法告诉 cluster
查看一段代码?
当然可以。这是不使用新 .setupPrimary
方法时集群的通常行为。可以使用.fork()
的env
参数来传递参数:
import cluster from 'cluster';
if (cluster.isPrimary) {
cluster.fork({use: 'https'});
cluster.fork({use: 'http'});
} else {
if (process.env.use && process.env.use == 'https') {
// code for https worker
} else if (process.env.use && process.env.use == 'http') {
// code for http worker
} else {
console.log("missing 'use' environment variable in worker");
}
}