节点请求库错误:getaddrinfo ENOTFOUND dns.js 26

我以连续的方式(每天多次请求一次)抓取网站,并且每次都使用asynchronous和请求节点模块。 我使用async eachLimit并行运行函数getPage(这里没有显示代码)。 但是,一旦在几千个查询中,我收到以下错误:

Error: getaddrinfo ENOTFOUND 247sports.com 247sports.com:80 at errnoException (dns.js:26:10) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:77:26) 

即使我知道我通过它的url是有效的。 我发现有人使用http模块的解决scheme,并得到相同的错误,但似乎没有人使用请求模块得到这个。 我知道我的IP没有被阻止,因为我可以在错误之后立即访问网站。 我也知道我的用户代理不是问题,因为我旋转了用户代理列表,所有这些都是有效的。 我的猜测是问题在于请求库与节点http模块交互的地方。 不幸的是,我无法准确地重现问题,因为当我同时或连续推送大量请求时,它似乎只是被触发。

下面的函数代码是我的函数的样子:

 function getPage(){ var options = { url: "http://stackoverflow.com/", headers: { 'User-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:2.0.1) Gecko/20110506 Firefox/4.0.1' }; request(options, function(err, resp, body) { if (err){ throw err; return; } PagesScraped++; console.log(PagesScraped); return; }); }; for (var i = 0; i < 600; i++){ getPage(); }; 

注:我意识到这个代码asynchronous获取600次相同的页面,但如果运行足够多的时间,错误仍然存​​在…我的本地代码访问同一网站上成千上万的页面。

       

网上收集的解决方案 "节点请求库错误:getaddrinfo ENOTFOUND dns.js 26"