python实现计时和重试装饰器

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
posted @ 2021-04-07 20:10  stay丶gold  阅读(130)  评论(0)    收藏  举报