前言
有朋友安利了一下Tenacity, 特别好用, 提供了简单易使用的通用装饰器API
官方文档: https://tenacity.readthedocs.io/en/latest/
测试代码
import random from tenacity import retry, stop_after_attempt # 限定重试5次 @retry(stop=stop_after_attempt(5)) def do_something_unreliable(): num = random.randint(0, 10) print(num) if num > 1: raise IOError("Broken sauce, everything is hosed!!!111one") else: return "Awesome sauce!" print(do_something_unreliable())
基本所有的api都是在装饰器里面实现, 还可以多种api任意组合使用, 支持自定义回调和asyncio
官方文档写的很详细了, 而且有对应的例子, 直接看官方文档然后用起来吧