Search code examples
pythongetaddrinfo

(python) [Errno 11001] getaddrinfo failed


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 

Solution

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