当前位置: 首页 > article >正文

node express 开启多进程

const express = require('express');
const cluster = require('cluster');
const os = require('os');

function formatDate() {
    let date = new Date();
    const day = date.getDate().toString().padStart(2, '0');
    const month = (date.getMonth() + 1).toString().padStart(2, '0'); // 月份是从0开始的
    const year = date.getFullYear();
    const hours = date.getHours().toString().padStart(2, '0');
    const minutes = date.getMinutes().toString().padStart(2, '0');
    const seconds = date.getSeconds().toString().padStart(2, '0');

    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
const numCPUs = os.cpus().length;
a = undefined
if (cluster.isMaster) {
    // 主进程
    console.log(`master ${process.pid} running`);

    // 为每个CPU核心创建一个工作进程
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
    cluster.on('exit', (worker, code, signal) => {
        console.log(`工作进程 ${worker.process.pid} 已退出`);
    });
} else {
    // 工作进程
    const app = express();

    app.get('/encryptPassword', (req, res) => {

        let keyId = req.query.keyId;
        let publicKey = req.query.publicKey;
        let version = req.query.version;
        let password = req.query.password;
        version = isNaN(parseInt(version)) ? 0 : parseInt(version);
        if (keyId && publicKey && version && password) {
            // 调用func 返回结果
            func(keyId, publicKey, version, password).then(result=>{
                console.log(formatDate() +" "+result)
                res.send({status: "ok", password: result})
            }).catch(err=>{
                console.log(formatDate() +" "+err)
                res.send({status: "no", error: err.toString()})
            })
        } else {
            res.send('Error')
        }

    });

    app.listen(8848, () => {
        console.log(`worker ${process.pid} running`);
    });
}

http://www.kler.cn/news/306181.html

相关文章:

  • python多线程程序设计 之二
  • C#获取计算机信息
  • C++入门基础知识68(高级)——【关于C++ 异常处理】
  • 【系统架构设计师-2010年真题】案例分析-答案及详解
  • Superset二次开发之源码asyncEvent.ts 分析
  • 嵌入式C语言自我修养:C语言的面向对象编程思想
  • 问题 H: 三角数
  • 【在Linux世界中追寻伟大的One Piece】五种IO模型和阻塞IO
  • 13. 神经网络基本骨架--nn.Module
  • 长业务事务的离线并发问题
  • 9. 什么是 Beam Search?深入理解模型生成策略
  • leetcode 难度【简单模式】标签【数据库】题型整理大全
  • 【网络安全的神秘世界】渗透测试基础
  • 【C#】添加临时环境变量
  • linux第二课(docker的安装使用)
  • 微软九月补丁星期二发现了 79 个漏洞
  • 《ImageNet Classification with Deep Convolutional Neural Networks》论文导读
  • 漫画元素检测系统源码分享
  • AutoSar AP通信的事件订阅
  • Playwright与Selenium的对比:谁是更适合你的自动化测试工具?
  • 通俗理解低秩分解
  • 【webpack4系列】设计可维护的webpack4.x+vue构建配置(终极篇)
  • (182)时序收敛--->(32)时序收敛三二
  • 如何通过网络找到自己想要的LabVIEW知识?
  • Pocketpair澄清表示《幻兽帕鲁》无意转型免费游戏
  • 儿童编程与AI辅助编程:未来教育的机遇与挑战
  • 窗口框架frame(HTML前端)
  • 福建科立讯通信 指挥调度管理平台 SQL注入漏洞
  • 【算法篇】哈希类(笔记)
  • Ubuntu 不重装系统增加交换空间大小