Javascript NodeJS:是否可以从NodeJS服务器向某个api发出1000个http get请求
我试图对某个web api(Javascript NodeJS:是否可以从NodeJS服务器向某个api发出1000个http get请求,javascript,node.js,http,asynchronous,Javascript,Node.js,Http,Asynchronous,我试图对某个web api(abc.com/query?val=somekey)同时执行将近2000多个http get请求。下面是我的代码 async.each(keysArray,function(key,callback1){ sails.http.get({ hostname:'abc.com', path:'/query?val='+key, headers:{ "Accept":"text/html,application/xhtml+xml,
abc.com/query?val=somekey
)同时执行将近2000多个http get请求。下面是我的代码
async.each(keysArray,function(key,callback1){
sails.http.get({
hostname:'abc.com',
path:'/query?val='+key,
headers:{
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"User-Agent":"MYBROWSER"
}
},function(response){
var str='';
response.on('data',function(chunk){
str+=chunk;
});
response.on('end',function(){
console.log(new Buffer(str,'utf8'));
// some job on each str from each key
});
});
});
KeyArray的长度大约是2000。所以上面的代码执行了将近2000个http get请求
events.js:141
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at exports._errnoException (util.js:870:11)
at TCP.onread (net.js:544:26)
尽管我找到了一种使用async.eachLimits()
限制并发的方法。
有可能执行如此多的请求吗?或者存在机器或服务器的任何依赖关系。有关错误的解释,请参阅。我的猜测是,你肯定是在以太快的速度访问web服务器…尝试将http请求限制到一个更合理的数量。这是因为网站限制了你的速率吗?1000西莫看起来很疯狂。@Tennisonh谢谢你的资源。但是在async.parallel()中推送1000个任务会导致相同的错误。因为这个庞大的并行http.get请求@waza007将其缩小…每秒20或50?很有可能ABC.com会因为你敲打他们的服务器而生气,当你试图一次向它发送2000个请求时,它会断开你的连接。@waza007这在一台机器上可能是不可能的。您需要在专业级网络上的几台不同的机器上错开它,才能同时达到2000个请求。有关错误的解释,请参阅。我的猜测是,你肯定是在以太快的速度访问web服务器…尝试将http请求限制到一个更合理的数量。这是因为网站限制了你的速率吗?1000西莫看起来很疯狂。@Tennisonh谢谢你的资源。但是在async.parallel()中推送1000个任务会导致相同的错误。因为这个庞大的并行http.get请求@waza007将其缩小…每秒20或50?很有可能ABC.com会因为你敲打他们的服务器而生气,当你试图一次向它发送2000个请求时,它会断开你的连接。@waza007这在一台机器上可能是不可能的。在一个专业级的网络上,你需要在几个不同的机器上错开它,一次达到2000个请求。