【问题标题】:How to know when all cluster workers are up?如何知道所有集群工作人员何时启动?
【发布时间】:2017-08-18 09:25:44
【问题描述】:

我希望使用启动和停止方法引导 node cluster

我想写一些类似的东西:

myCluster.start().then(()=>{
    return myCluster.stop().then(()=>{console.log('smooth stop! nice.')});
}).catch(err=>{console.log('something went wrong')});

我怎样才能准确地知道我的所有工人何时都在运行?

PS:不一定要和承诺一起。

【问题讨论】:

    标签: node.js multithreading node-cluster


    【解决方案1】:

    我设法设计了一个解决方案,方法是在工人收听后立即从工人向主人发送消息:

    private sendMaster(pid: number, msg: ClusterMessage) {
        process.send({ pid, msg });
    }
    
     self.server.listen(self.options.port, () => {
           self.sendMaster(process.pid, ClusterMessage.WORKER_LISTENING);
           resolve();
        }).on('error', () => {
           logError('Failed to start the server on port %O', self.options.port);
           reject();
    });
    

    在主代码中,我会抓取这样的消息:

    cluster.on('message', (worker, data) => {
        logInfo('Process %O listening on port %O', data.pid, self.options.port);
        self.startedWorkersCount++;
        if (self.startedWorkersCount === self.options.workers) {
           logInfo('Server ready');
           resolve(self.startedWorkersCount);
        }
     });
    

    您可以更详细地查看我的代码here

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 2022-12-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      • 2019-08-04
      相关资源
      最近更新 更多