Javascript Node.js:某个时间的并行GET请求出现未经处理的错误
我正在使用模块向API发送大约100个并行的GET请求。我遇到的问题是在大约Javascript Node.js:某个时间的并行GET请求出现未经处理的错误,javascript,node.js,api,http,get,Javascript,Node.js,Api,Http,Get,我正在使用模块向API发送大约100个并行的GET请求。我遇到的问题是在大约80到100次请求上随机出现的,节点抛出此异常: events.js:141 throw er; // Unhandled 'error' event ^ Error: connect ETIMEDOUT 0.0.0.0:80 //a dummy ip at Object.exports._errnoException (util.js:860:11) at exports._e
80到100次请求上随机出现的,节点
抛出此异常:
events.js:141
throw er; // Unhandled 'error' event
^
Error: connect ETIMEDOUT 0.0.0.0:80 //a dummy ip
at Object.exports._errnoException (util.js:860:11)
at exports._exceptionWithHostPort (util.js:883:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14)
以下是我的请求默认值:
var apiRequest = request.defaults({
url : url, //response is in xml format
headers : {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'en-US,en;q=0.8'
},
method : 'GET',
gzip : true,
encoding : 'utf8',
pool: {maxSockets: Infinity},
forever : true,
timeout : 120000
});
另外,我正在请求使用数组上的循环修复了我的问题,在错误事件
上递归地请求失败的URL,直到没有超时:
function getAPI(url) {
var apiRequest = request.defaults({
url : url,
headers : {
'Accept': 'text/html,application/xhtml+xml,application/xml'
},
method : 'GET',
gzip : true
});
apiRequest(function (error, response, body) {
}).on('error', function(e){
getAPI(this.uri.href);//this is important
}).end();
}
大约需要多长时间才能找到错误?几分钟?@MattWay是的,大约一两分钟。它的变体。尝试将
超时时间提高一点,看看会发生什么。@RaminOmrani在您这边似乎没有任何问题,您是否检查了这些API是否正确响应?@MattWay再次引发异常