这是以前碰到的笔试题,当时比较紧张,脑子转不过来,可能很多面试者都有这种经历。现在看书时又看到这个方法,想到了之前那道面试题,简单实现
import time
from functools import wraps
def retry(timeout=0, try_count=0):
"""
:param timeout: 超时时间
:param try_count: 重试次数
:return:
"""
def wrapper(func):
@wraps(func)
def inner(*args, **kwargs):
m = 0
while m <= try_count:
try:
start = time.time()
res = func(*args, **kwargs)
end = time.time()
if end-start < timeout:
return res
else:
print("超时")
return
except Exception as e:
time.sleep(1)
m += 1
print("error: {}".format(e))
if m > try_count:
print("重试次数太多")
return inner
return wrapper
@retry(3, 3)
def hi():
# 测试超时时间
# time.sleep(3)
# return (2/2)
# 测试重试
print(1/0)
res = hi()
if res:
print(res)