from functools import wraps
import time
# def retry(retry_time, retry_on_result, time_wait):
# def test(func):
# @wraps(func)
# def wrapper(*args, **kwargs):
# i = 0
# while i < retry_time:
# i += 1
# res = func(*args, **kwargs)
# if not retry_on_result(res):
# return res
# time.sleep(time_wait)
# return wrapper
# return test
class retry:
def __init__(self, retry_time, retry_on_result, time_wait):
self.retry_time = retry_time
self.retry_on_result = retry_on_result
self.time_wait = time_wait
def __call__(self, func):
@wraps(func)
def wrapped(*args, **kwargs):
i = 0
while i < self.retry_time:
res = func(*args, **kwargs)
if not self.retry_on_result(res):
return res
i+=1
time.sleep(self.time_wait)
return wrapped
@retry(3, lambda x: x is None, 1)
def test(a):
print(a)
return None
if __name__ == "__main__":
print(test("s"))