gpt4 book ai didi

javascript - 使用nodejs中的集群在两个不同的worker中运行两个任务

转载 作者:行者123 更新时间:2023-12-01 03:53:53 24 4
gpt4 key购买 nike

我正在学习 NodeJS 中的集群。我有两个任务,一个是node-sass,另一个是uglifyjs,我想由两个不同的工作人员使用nodeJS中的集群来运行它。虽然代码是工作文件并创建 SASS -> CSS 文件和 main.jsmain.min.js 文件。

但我不确定它是否是由单独的 worker 处理的。让我知道我可以在哪里进行修改 -

  • SASS -> CSS 由一名工作人员处理
  • UglifyJS 第二个工作人员的任务
  • 两项任务完成后,主控制台将显示成功消息

以下是我的代码:

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
var fs = require('fs');
var UglifyJS = require("uglify-js");
var sass = require('node-sass');

if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);

// Fork workers.
for (let i = 0; i < 2; i++) {
cluster.fork();
}

cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
} else {


var result = UglifyJS.minify("js/main.js");
fs.writeFile(__dirname + '/js/main.min.js', result.code, function(err){
if(err)
throw err;
});

sass.render({
file: './css/main.scss',
outFile: 'css',
}, function(err, result) {
if(err)
throw err;
fs.writeFile(__dirname + '/css/main.css', result.css, function(err){
if(err)
throw err;
});
});

console.log(`Worker ${process.pid} started`);
}

最佳答案

我认为这会有所帮助

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
var fs = require('fs');
var UglifyJS = require("uglify-js");
var sass = require('node-sass');

if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
cluster.fork()
.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});
cluster.fork()
.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
});

} else if (cluster.worker.id === 1) {
console.log(`Worker ${process.pid} started`);
sass.render({
file: './css/main.scss',
outFile: 'css',
}, function (err, result) {
if (err)
throw err;
fs.writeFile(__dirname + '/css/main.css', result.css, function (err) {
if (err)
throw err;
});
});
process.exit();
} else {
var result = UglifyJS.minify("js/main.js");
fs.writeFile(__dirname + '/js/main.min.js', result.code, function (err) {
if (err)
throw err;
});
process.exit();
}

关于javascript - 使用nodejs中的集群在两个不同的worker中运行两个任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42942522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com