прокси и повторы для getaddrbyhost - PullRequest
1 голос
/ 28 ноября 2011

Эта функция не дает мне покоя, я делаю это правильно? Есть ли другой способ получить домен с IP-адреса?

def ip_to_domain(ip):

        for i in range(0,4):
                try:
                        domain = socket.gethostbyaddr(str(ip))
                        return domain
                except IOError:
                        continue
                else:
                        break
        else:
                return False

спасибо за любой совет, который вы можете дать.

1 Ответ

0 голосов
/ 28 ноября 2011

Вам также нужно перехватить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...