如果超过1秒钟完成功能,则结束功能

时间:2016-01-19 13:30:03

标签: python sockets exception exception-handling signals

我对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秒才能到达目的地。此外,我不确定我是否按照预期的方式实施了这个想法。

0 个答案:

没有答案