code:
import random,time
def retry(times=1,custom_exception=None,delay_time_in=1):
"""times:重试次数
custom_exception: 自定义异常
delay_time_in:延迟随机时间段[0,delay_time]
"""
def outer(func):
def inner(*args,**kwargs):
for x in range(times):
if x > 0:
delay_ = random.uniform(0, delay_time_in)
time.sleep(delay_)
print(f"第{x}次循环所使用延迟时间:",delay_)
try:
return func(*args,**kwargs)
except Exception as e:
if x+1 == times:
if custom_exception:
raise custom_exception
else:
raise e
return inner
return outer
@retry(3,custom_exception=Exception("自定义错误"),delay_time_in=3)
def test(str):
j = 5
return j + str
if __name__ == "__main__":
print(test("test"))
output: