Python urllib2抛出异常

时间:2013-04-04 08:28:13

标签: python web-services urllib2

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

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

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

什么可能导致90%的远程请求突然失败? [Errno -2]实际意味着什么? 我搜索了urllib2个文档,但没有找到[Errno -2]的真实解释,也在这里搜索了没有成功的答案。

请帮忙吗?

其他信息:

  1. 我也可以从我自己的浏览器访问网址,所以这不是一个糟糕的网址。
  2. 我可以从我的服务器ping远程域而没有任何失败。
  3. 正如我所提到的,它不是100%失败,而是约95%。
  4. 回溯堆栈如下所示:

    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
    

1 个答案:

答案 0 :(得分:0)

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

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

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

我想我们需要搬家,嗯?