(python) [Errno 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 

person RR1    schedule 04.04.2014    source источник
comment
возможный дубликат getaddrinfo не удалось, что это значит?   -  person Bruno Gelb    schedule 04.04.2014
comment
Вы должны добавить немного больше контекста к этому вопросу. Для чего нужен код и на какой платформе вы его пытаетесь, по крайней мере.   -  person Totoro    schedule 04.04.2014


Ответы (1)


Что ж, давайте спросим у 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? Google выдает документацию socket.gaierror, в которой говорится:

Это исключение возникает для ошибок, связанных с адресом, для getaddrinfo() и getnameinfo()

Таким образом, ошибка GAI = ошибка получения информации об адресе.

person andrewdotn    schedule 04.04.2014
comment
Это на самом деле не отвечает на вопрос. Код пытается получить доступ к серверу, который недоступен, возможно, потому, что вы не подключены к общедоступному Интернету, или, возможно, потому, что он больше не существует. Фрагмент из вовлеченного файла __init__.py должен помочь прояснить это. - person tripleee; 04.04.2014
comment
как мы можем получить информацию об адресе? - person GHOSTH4CK3R; 11.03.2021