(python) [Errno 11001] getaddrinfo failed

匿名 (未验证) 提交于 2019-12-03 02:33:02

问题:

Can someone help me on how I can catch this error?

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:

Well, let’s ask Python what type of exception that is:

#!/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 

Prints:

$ ./foo.py <class 'socket.gaierror'> [Errno 8] nodename nor servname provided, or not known 

So we need to catch socket.gaierror, like so:

#!/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' 

Though there’s still the question of, what the heck is gaierror? Google turns up the socket.gaierror documentation, which says,

This exception is raised for address-related errors, for getaddrinfo() and getnameinfo()

So GAI Error = Get Address Info Error.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!