- 通过命令安装 npm install express-cluster
express-cluster介绍: https://www.npmjs.com/package/express-cluster

- server.js代码
Object.defineProperty(exports, '__esModule', {
value: true,
});
const express = require('express');
var cluster = require('express-cluster');
const numCPUs = require('os').cpus().length;
global.workid
cluster(function (worker) {
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '200mb' }));
const router = require('./router');
app.use('/', router);
global.workid = worker.id
const serverPort = process.env.PORT || 8000;
var server = app.listen(serverPort, () => {
console.log('Server Start processId =' + global.workid);
});
server.setTimeout(1200000)
return server
}, {
count: numCPUs
})
- 当启动多线程以后,schedule定制任务也会启动多个。这样会造成一些麻烦,我们可以通过worker.id来控制一下,只执行一个定制任务。
const scheduleCronstyle = () => {
var rule = new schedule.RecurrenceRule();
rule.hour = [23];
rule.minute = [10, 30, 50];
schedule.scheduleJob(rule, () => {
// 通过保存在global变量中的workid来控制, 多个线程 只执行一次schedule(workid = 1)
if(global.workid!= 1) {
return
}
xxxxxxxxxx
console.log('scheduleCronstyle processId = ' + global.workid);
});
};
scheduleCronstyle();