问题:想象你有一个查询。它需要5秒钟才能解决。您的用户希望请求您的api(/ test)获取查询结果。他们同时请求你的api。因此,如果用户数为10,则第10个用户将等待50秒以获得响应。他们怎么能在5s做?
每种编程语言都可以。
使用nodejs的示例代码:
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
var query = function(){
var timeA=new Date();
var timeB=new Date();
var timeC=new Date();
var time=0;
console.log('test',timeB.getTime()-timeA.getTime());
while(timeB.getTime()-timeA.getTime()<5000){
timeB=new Date();
if(timeB.getTime()-timeC.getTime()>100){
console.log(time++);
timeC=new Date();
}
}
return time;
};
app.get('/test', function (req, res) {
res.send('finish with time '+query());
});
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
答案 0 :(得分:1)
如果您想进行一些负载测试,可以使用:
两者都可以在X秒内对你的REST api做X请求并给你一些统计数据。
答案 1 :(得分:0)
从您的问题中不清楚请求是否发送任何使请求唯一的参数。如果它们都发出相同的请求(没有参数或相同的参数),您的代码可以检查以下内容:
收到请求时:检查是否有其他正在进行的查询将回答新查询。如果是,请将此请求者添加到队列中,但不要重新提交查询。
完成查询计算后,将结果回复给所有进行相同查询的请求者(来自上面第1项中的队列)。
这种方法有意义吗?