`

python黑魔法异常重试的次数,间隔的装饰器涵数

阅读更多
起因:
   在github找到一个库retrying
   但这个库一点也不好用,好久没维护了
   索性,造一个
   还可以扩展timeout
from functools import wraps
from threading import Event


def retry_exception(retry_count=0, interval_wait=0):
    def wrap(f):
        @wraps(f)
        def func(*args, **kwargs):
            try:
                return f(*args, **kwargs)
            except Exception as e:
                if retry_count == 0:
                    return str(e)
                if retry_count >= 1:
                    count = retry_count
                    while 1:
                        Event().wait(interval_wait)
                        try:
                            count = count - 1
                            return f(*args, **kwargs)
                        except Exception as e:
                            if count == 0:
                                return str(e)
                            continue
        return func
    return wrap


@retry_exception(retry_count=3, interval_wait=3)
def tt():
    a = 1
    if a != 2:
        raise Exception('i am exception')
    print(a)

print(tt()) 

1
0
分享到:
评论
1 楼 phncz310 2017-11-23  
厉害了,我的哥

相关推荐

Global site tag (gtag.js) - Google Analytics