1

我有一个运行良好几个月的 python web-scraper 脚本。它使用 urllib2 访问远程 URL、提交数据、捕获结果等。

昨天突然 urlli2 开始在大多数(但不是全部)访问远程 URL 的尝试中抛出错误。错误是:

URLError: urlopen error [Errno -2] Name or service not known

什么会导致 90% 的远程请求突然失败?究竟是什么[Errno -2]意思??我搜索了urllib2文档,但没有找到真正的解释[Errno -2],也在这里搜索了任何答案但没有成功。

请帮忙?

附加信息:

  1. 我也可以从我自己的浏览器访问该 URL,所以它不是一个错误的 URL。
  2. 我可以从我的服务器 ping 远程域,完全没有失败。
  3. 正如我所提到的,它不会 100% 失败,而是大约 95%。

回溯堆栈如下所示:

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
4

1 回答 1

0

答案几乎可以肯定是托管我们服务器的数据中心的网络配置问题。

问题(基本上是阻止出站 HTTP 请求)突然出现,在 60 小时内不一致,然后突然自行消失。在检查我们自己的日志时,我们还发现大约 6 个月前发生了同样的事情,但只持续了大约一个小时,没有人注意到。这次持续了 60 个小时,所以每个人都注意到了。

主机不会承认任何事情,但一切都指向他们数据中心的防火墙或路由器问题。房东的客户服务代表甚至不会意识到任何此类更改,因此他们当然无法确认或否认。从一切正常到大部分停止工作到一切重新开始工作,我们的服务器上没有任何变化。在过去,他们会每隔几天就重新启动我们的服务器。

我想我们需要搬家,嗯?

于 2013-04-05T01:06:54.603 回答