def clock(func):
"""
计时装饰器
:param func:
:return:
"""
@functools.wraps(func)
def deco(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
time_cost = time.time() - start_time
print(func.__name__ + " time cost -> {}".format(round(time_cost, 2)))
return result
return deco
def catch_except(retries=1, wait_time=1):
"""
异常和重试装饰器
:return:
"""
def deco(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
retry_num = 0
while retry_num < retries:
try:
ret = func(*args, **kwargs)
return ret
except Exception as e:
if retry_num != 0:
print("[{}] retry[{}]".format(func.__name__, retry_num))
retry_num += 1
time.sleep(wait_time)
if retry_num == retries:
print(traceback.format_exc())
raise Exception(e)
finally:
pass
return wrapper
return deco