我需要下载大约5000页,我在一个循环中使用request.get()在里面这样做,所以每个循环运行400ms timeOut,但这没有帮助,大约1000个周期后,所有只是冻结,没有已下载或我看到Socket hang up
错误。我认为问题可能出在系统套接字限制或其他方面。这是我的代码:
function downloadDescription(url,iterator, downloadDescriptionCallback) {
request.get(url, function (err, response, body) {
if (err) {
if(iterator < 3) {
setTimeout(function () {
downloadDescription(url, iterator, downloadDescriptionCallback)
}, 1300);
}else{
log.warn("Request.get error link iterator limit");
return downloadDescriptionCallback(null, "");
}
}else if (response.statusCode === 404) {
if(iterator < 3) {//here I just change my Url, cause I dont exactly know the right path, and if I reach 3 iterator limits, I just forget him
url = desc_base_url + url.substring(url.indexOf("/", 27) + 1, url.length);
iterator++;
setTimeout(function(){ downloadDescription(url, iterator, downloadDescriptionCallback) }, 1300);
}else{
return downloadDescriptionCallback(null, body);
}
}else{
return downloadDescriptionCallback(null, body);
}
}).on('error', function(err) {
console.log(err)
});
};
所以经过一段时间大约100-200个周期后,我得到了一个奇怪的行为,下载时间非常慢,我甚至从未达到完整的5000页,我想我可以通过调整选项来提高我的性能吗?