我有一个python web-scraper脚本,运行良好数月。它使用urllib2来访问远程URL,提交数据,捕获结果等。
昨天突然间,urlli2开始在大多数(但不是全部)尝试访问远程URL时抛出错误。错误是:
URLError: urlopen error [Errno -2] Name or service not known
什么可能导致90%的远程请求突然失败? [Errno -2]
实际意味着什么?
我搜索了urllib2
个文档,但没有找到[Errno -2]
的真实解释,也在这里搜索了没有成功的答案。
请帮忙吗?
其他信息:
回溯堆栈如下所示:
File "/var/www/html/pylaw/http.py", line 8, in urlopen
X = urllib2.urlopen(url, data=d).read()
File "/usr/local/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/local/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/local/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/local/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/local/lib/python2.7/urllib2.py", line 1215, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/usr/local/lib/python2.7/urllib2.py", line 1177, in do_open
raise URLError(err)
URLError: urlopen error [Errno -2] Name or service not known
答案 0 :(得分:0)
答案几乎肯定是托管我们服务器的数据中心的网络配置问题。
问题(基本上阻止出站HTTP请求)突然出现,60小时不一致,然后就像突然清除一样。在检查我们自己的日志时,我们还发现大约6个月前发生了同样的事情,但它只持续了大约一个小时,没有人注意到。这次持续了60个小时,所以每个人都注意到了。
主机不会承认任何内容,但所有内容都指向数据中心的防火墙或路由器问题。主机的客户服务代表甚至不知道任何此类更改,因此当然他们无法确认或否认它。我们的服务器上没有任何改变,从一切工作到大部分时间都停止工作,再到全部重新开始工作时。在过去,他们每隔几天就会重新启动我们的服务器。
我想我们需要搬家,嗯?