我对Python没有任何经验,但我试图用它来解析一些来自IP地址的主机名。我可以用socket.gethosybyaddr做到这一点。默认情况下,您无法在此功能上设置自定义超时,这很不幸,因为如果我在不到1秒的时间内无法解析主机名,我对答案不感兴趣。
我看了一下这篇文章试图自己实现一个,但它还没有解决:
import socket,signal
ips = ['190.213.192.39','92.247.222.20','85.65.191.56','174.36.30.111','209.17.73.30','64.4.35.57','65.54.95.149']
def handler(signum, frame):
raise Exception('timeout')
def resolve(ip):
try:
return socket.gethostbyaddr(ip)
except:
pass
signal.signal(signal.SIGALRM, handler)
for ip in ips:
signal.alarm(1)
print resolve(ip)
我实际上得到了一个异常:当我无法解析IP时超时,但它需要超过1秒才能到达目的地。此外,我不确定我是否按照预期的方式实施了这个想法。