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
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.