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"))
标签:__,retry,python,self,result,time,装饰,def From: https://www.cnblogs.com/wender/p/16821459.html