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