前言
1、在实际应用中,经常会碰到在web网络
请求时,因为网络的不稳定,会有请求超时的问题,这时候,一般都是自己去实现重试请求的逻辑,直到得到响应或者超时。虽然这样的逻辑并不复杂,但是代码写起来却不那么优雅,不那么pythonic
。
2、在与接口的通信过程中,为了防止由于网络不稳定情况,造成请求错误或者超时等问题,或者其他不可控因素等造成功能性问题,我们一般都会加入重试功能以增加代码的健壮性。
3、 tenacity 库是一个重试库,使用python
语言编写,它能够让我们在任务的重试操作中变得非常简单,使用的是Apache 2.0
开源协议。
4、 tenacity 库是一个 Apache 2.0 许可的通用重试库,用 Python 编写,用于简化向几乎任何事物添加重试行为的任务。
5、 tenacity 库的特性:
- 通用装饰器 API
- 指定停止条件(即尝试次数限制)
- 指定等待条件(即尝试之间的指数退避睡眠)
- 自定义重试异常
- 自定义对预期返回结果的重试
- 重试协程
- 使用上下文管理器重试代码块
安装
pip install tenacity
使用
1、基本重试
from tenacity import retry @retry def never_give_up_never_surrender(): print("无条件重试,重试之间无间隔,报错之后就立马重试") raise Exception if __name__ == '__main__': never_give_up_never_surrender()
运行结果:
2、停止重试
设置重试次数:
from tenacity import retry, stop_after_attempt @retry(stop=stop_after_attempt(7)) def stop_after_7_attempts(): print("重试7次后停止") raise Exception if __name__ == '__main__': stop_after_7_attempts()
运行结果:
原创文章,作者:254126420,如若转载,请注明出处:https://blog.ytso.com/275186.html