gpt4 book ai didi

node.js - Nodejs - 即使在调用 cluster.worker.disconnect() 之后,工作人员仍接受新请求

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:13 29 4
gpt4 key购买 nike

我尝试在'x'秒后关闭nodejs工作线程,并且当我尝试通过调用cluster.worker.disconnect()在指定时间间隔后关闭工作线程时,同一工作线程在调用processexit()之前仍在接受新请求,并且工作线程没有正常重新启动。

需要帮助以确定如何阻止服务器在“x”秒后接收进一步的请求并处理现有请求并正常重新启动。

目前,我正在考虑这种方法,这种方法不会在“x”秒后重新启动服务器,但最终会正常重新启动。

1)“x 秒”后调用以下代码段

if (cluster.worker) {
cluster.worker.disconnect();
}
server.close();

2)然后处理server的close事件,server空闲时会触发close并关闭server。

server.on('close', function(){
console.log("Closed the server worker with pid: " + process.pid + " port: " + process.env.PORT + " date: " + staticFunctions.getLogDate());
if(cluster.worker){
process.exit(1);
}
});

3)然后使用进程的退出事件处理程序来派生新的worker:

cluster.on('exit', function(worker, code, signal) {
console.log("worker => exit with pid: "+ worker.process.pid+" Died. Restarting. port: " + process.env.PORT + " date: " + staticFunctions.getLogDate());
var id = some_id;
setTimeout(function() {
var worker = cluster.fork({'workerId' : id});
},2000);
});

最佳答案

问题出在 server.close 上, Node 人员没有准备好接受。

您可以在 GitHub 上关注该问题 https://github.com/nodejs/node/issues/2642#issuecomment-229753639

关于node.js - Nodejs - 即使在调用 cluster.worker.disconnect() 之后,工作人员仍接受新请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52181487/

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