gpt4 book ai didi

node.js - 如何知道 express 仍在处理多少请求?

转载 作者:太空宇宙 更新时间:2023-11-03 22:02:24 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来了解服务器上是否有待处理的请求,以便我可以等待它们完成以正常关闭服务器。到目前为止我尝试过的是:

var express = require("express");
var app = express();

var count = 0;
app.use(function(req, res, next){
count++;
console.log(count);
next();
res.on("end", function(){ //PROBLEM HERE! This event does not exists!!!
count = count - 1;
console.log(count);
});
});

app.get("/", function(req, res, next){
res.send("Ok!");
});

process.on('SIGINT', function () {
if(count === 0) process.exit();
else console.log("Can't shutdown! Pending requests...");
});

var server = app.listen(8021);

那么处理这种情况的最佳方法是什么???我被困住了。

编辑:这应该是一项相当简单的任务。根据http://nodejs.org/api/net.html#net_server_close_callback

Stops the server from accepting new connections and keeps existing connections. This function is asynchronous, the server is finally closed when all connections are ended and the server emits a 'close' event. Optionally, you can pass a callback to listen for the 'close' event.

我可以简单地做:

process.on('SIGINT', function () {
console.log("Exiting");
server.close();
server.on("close", function(){
console.log("Exited");
process.exit(0);
});
});

但是我的关闭时回调从未被调用。还尝试过:

process.on('SIGINT', function () {
console.log("Exiting");
server.close(function(){
console.log("Exited");
process.exit(0);
});
});

但它也不起作用。

最佳答案

您可以尝试使用server.getConnections获取并发连接数。如果返回 0,那么您就可以安全退出。

关于node.js - 如何知道 express 仍在处理多少请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282712/

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