Вам также нужно перехватить socket.herror
... Используйте что-то вроде этого и проверьте, получаете ли вы значение None в соответствующем поле ...
import socket
def lookup(addr):
"""
Example usage:
name, alias, addresslist = lookup('4.2.2.2')
"""
try:
return socket.gethostbyaddr(addr)
except socket.herror:
return None, None, None
Если вы хотите автоматически найти ошибку, сделайте что-то вроде этого ...
import socket
import time
def relookup(addr):
"""
Example usage:
name, alias, addresslist = relookup('4.2.2.2')
"""
attempts = 1
while (attempts <= 3):
try:
return socket.gethostbyaddr(addr)
except IOError, socket.herror:
time.sleep(5)
attempts += 1
return None, None, None