这里是Python新手。
我正在使用eventlet和urllib2发出很多异步http请求。在我的档案顶端
import eventlet
import urllib
from eventlet.green import urllib2然后,我提出了很多异步http请求,这些请求都成功地使用了这一行:
conn = urllib2.urlopen(signed_url, None)突然间,我发现了一个错误:
URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>此错误发生在相同的urllib2.urlopen行上,这很奇怪,因为它以前多次成功。此外,当我打印signed_url并将其粘贴到我的浏览器时,我会得到一个正确的响应,因此url的格式是正确的。
我在帖子中跳来跳去,但找不到正确的调试策略。从概念上讲,是什么导致了这个错误?你建议我怎么去修理它?
我正在使用Python2.7.6。
谢谢。
发布于 2015-08-18 11:43:23
“nodename nodename”错误意味着DNS解析失败。最可能的原因是上游DNS服务器的速率限制。如果您认真地进行web爬行,我可以推荐两种方法:
http://1.2.3.4/path和Host: domain头中解析的IP地址传递给urlopen。这将允许分别限制DNS请求和实际HTTP请求的并发性。如果大多数情况下,每个唯一的主机只获取一个请求,这将不会有帮助。发现自己有许多递归DNS服务器来分发工作,收集它们的响应时间统计数据,更频繁地使用更快的服务器。https://stackoverflow.com/questions/32065895
复制相似问题