(python) [错误 11001] getaddrinfo 失败
有人能帮我一下吗?我想知道怎么处理这个错误。
import pygeoip
gi = pygeoip.GeoIP('GeoIP.dat')
print gi.country_code_by_name('specificdownload.com')
Traceback (most recent call last):
File "<module1>", line 14, in <module>
File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 447, in country_code_by_name
addr = self._gethostbyname(hostname)
File "build\bdist.win-amd64\egg\pygeoip\__init__.py", line 392, in _gethostbyname
return socket.gethostbyname(hostname)
gaierror: [Errno 11001] getaddrinfo failed
1 个回答
7
好吧,让我们问问Python,这是什么类型的异常:
#!/usr/bin/env python2.7
import pygeoip
gi = pygeoip.GeoIP('GeoIP.dat')
try:
print gi.country_code_by_name('specificdownload.com')
except Exception, e:
print type(e)
print e
打印结果是:
$ ./foo.py
<class 'socket.gaierror'>
[Errno 8] nodename nor servname provided, or not known
所以我们需要捕捉 socket.gaierror
,像这样:
#!/usr/bin/env python2.7
import pygeoip
import socket
gi = pygeoip.GeoIP('GeoIP.dat')
try:
print gi.country_code_by_name('specificdownload.com')
except socket.gaierror:
print 'ignoring failed address lookup'
不过,还是有个问题,那到底什么是 gaierror
呢?在谷歌上搜索一下,能找到 关于 socket.gaierror
的文档,里面说:
这个异常是因为地址相关的错误而产生的,适用于
getaddrinfo()
和getnameinfo()
所以 GAI 错误 = 获取地址信息错误。