对于 Node 服务器的每个请求,我都会多次调用函数 dorequest。
我对在 apache2.2.21 上运行的网页的请求有问题。几乎这些请求都没有任何问题地完成,但有几个请求以错误 ECONNRESET
结尾,我不知道为什么。如果我使用 apapche2.4 那么一切都会顺利。
var request = require('request');
function dorequest(set, callback){
request.get(url, function optionalCallback(err, httpResponse, body){
if (err){
console.log(url);
throw err;
} else {
//do some stuffs
}
});
}
最佳答案
可能您的 apache 服务器只是丢弃您的请求,因为 dorequest
函数同时发起的连接过多。
您可以通过在前一个请求的回调中调用下一个请求来调用另一个请求的回调来执行这些请求,但由于它们的数量相当多,并且出于审美原因,我建议使用 async
library -在处理此类事情时,它非常棒并且非常方便。
function dorequest(set, callback){
request.get(url, function optionalCallback(err, httpResponse, body){
if (err){
callback(err);
} else {
//do some stuffs
}
callback(err, res);
});
}
var maxRequestAtATime = 30;
async.mapLimit(arrayOfOptions, maxRequestAtATime, dorequest, function(err, results){
// results is now an array of stats for each request
});
如果请求的选项取决于前一个请求的选项,则应使用async.waterfall
。
关于javascript - 从node.js发送请求到apache2.2.21,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35194621/