def retry(times=1,exceptions=None): exceptions = exceptions if exceptions is not None else Exception def wrapper(func): def wrapper(*args,**kwargs): last_exception =None for _ in range(times): try: return func(*args, **kwargs) except exceptions as e: last_exception = e raise last_exception return wrapper return wrapper if __name__=="__main__": @retry(5) def test(): print("do something") raise Exception test()