【问题标题】:Function is running multiple time as per CPU core(CPU cores = 4 in my case). How can I run function only 1 time?函数根据 CPU 内核运行多次(在我的情况下 CPU 内核 = 4)。我怎样才能只运行一次功能?
【发布时间】:2018-04-28 08:25:47
【问题描述】:

由于集群,在我的 Node js 应用程序中,该函数执行了多次。我怎样才能只运行一次函数?其实是想运行cron作业,但是由于函数多次执行,cron执行了多次。

聚类代码: `

var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
    // Fork workers.
    // console.log('numCPUs--------',numCPUs);
    for (var i = 0; i < numCPUs; i++) {
        cluster.fork();
        console.log(process.pid);
    }
    cluster.on('exit', function (worker, code, signal) {
        // handle server crashes
        console.log('worker ' + worker.process.pid + ' died');
    });
} else {
    console.log(cluster.worker.id);
    const port = process.env.PORT || 8000;
    app.listen(8000);
}
(function test() {
    console.log("THIS is test");
}());


OUTPUT: 4
THIS is test
1
3
THIS is test
THIS is test
2
THIS is test

`

【问题讨论】:

    标签: node.js cron


    【解决方案1】:

    将对 test 函数的调用移至 master

    var numCPUs = require('os').cpus().length;
    if (cluster.isMaster) {
        test(); // calling test function moved to here
        // Fork workers.
        // console.log('numCPUs--------',numCPUs);
        for (var i = 0; i < numCPUs; i++) {
            cluster.fork();
            console.log(process.pid);
        }
        cluster.on('exit', function (worker, code, signal) {
            // handle server crashes
            console.log('worker ' + worker.process.pid + ' died');
        });
    } else {
        console.log(cluster.worker.id);
        const port = process.env.PORT || 8000;
        app.listen(8000);
    }
    
    // implementing the function only
    function test () {
        console.log("THIS is test");
    }
    

    【讨论】:

      猜你喜欢
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2017-07-29
      • 2017-08-22
      • 2021-05-29
      相关资源
      最近更新 更多