python版 异常重试的次数,间隔的装饰器涵数

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()) 

猜你喜欢

转载自hugoren.iteye.com/blog/2400615