首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

施用python设置超时

2013-06-26 
使用python设置超时我想调用一个自己写的方法def getData:但是getData有时候会取不出数据因此我想设置个超

使用python设置超时
我想调用一个自己写的方法def getData:
但是getData有时候会取不出数据
因此我想设置个超时,如果getData 5秒钟没有响应,那么就触发超时,程序自动exit
timeout(5,getData)
请问在python中怎么写,还是python本身就有这个方法
[解决办法]
@TraceFunc
def WorkInTime(Func, Timeout = 0, *args): 
    '''
    If function cann't finished in time then timeout
    '''

    def handler(signum, frame):    
        raise AssertionError

    try:
        signal.signal(signal.SIGALRM, handler)
        signal.alarm(Timeout)
        ret = Func(*args)
        signal.alarm(0)
        return ret
    except AssertionError:
        logger.error("%s conn't finished in %d seconds, timeout!" % (Func.__name__, Timeout))
        return -1
[解决办法]


@TraceFunc
def WorkInTime(Func, Timeout = 0, *args): 
    '''
    If function cann't finished in time then timeout
    '''

    def handler(signum, frame):    
        raise AssertionError

    try:
        signal.signal(signal.SIGALRM, handler)
        signal.alarm(Timeout)
        ret = Func(*args)
        signal.alarm(0)
        return ret
    except AssertionError:
        logger.error("%s conn't finished in %d seconds, timeout!" % (Func.__name__, Timeout))
        return -1

热点排行