说明
pip install retrying
默认使用会自动调用 报错的函数
,直到返回值
import random from retrying import retry from loguru import logger @retry def fun(): r = random.randint(0, 4) if r == 3: logger.success(f'Yes') else: logger.warning(f'IS {r} NOT 3') raise ValueError(f'IS {r} NOT 3') if __name__ == '__main__': fun()
常用方式
可以搭配使用
# 最大重试次数 @retry(stop_max_attempt_number=3) def fun(): # 重试间隔时间(毫秒) @retry(wait_fixed=2000) def fun() # 随机重试时间(毫秒) @retry(wait_random_min=1000, wait_random_max=2000) def fun() # 重试超时时间,超过后 不再进行重试(毫秒) @retry(stop_max_delay=10000) def fun() # 重试间隔呈 指数 增长,到 wait_exponential_max 停止增长(毫秒) # wait_exponential_multiplier 为乘数,1000 相对于 2^1 2^2 ... @retry(wait_exponential_multiplier=1000, wait_exponential_max=10000) def fun()
某种错误触发重试
当函数产生 ValueError 时,重试
def retry_if_value_error(exception): return isinstance(exception, ValueError) @retry(retry_on_exception=retry_if_value_error) def fun():
函数返回 某种结果 重试
import random from retrying import retry from loguru import logger def retry_result_is_3(result): # 结果 不为 3 则重试 return result != 3 @retry(retry_on_result=retry_result_is_3) # lambda x: != 3 def fun(): r = random.randint(0, 4) logger.success(f'IS {r}') return r if __name__ == '__main__': fun()
版权声明:《 【PY模块】尝试多次请求 retrying(第三方库) 》为明妃原创文章,转载请注明出处!
最后编辑:2022-1-12 07:01:08