用于整洁的重试包装的小库
yaretr的Python项目详细描述
#yaretry-另一个重试库
这是一个小python库,用于用重试逻辑包装或装饰函数。
normal,params)
```
用默认重试逻辑装饰函数:
``python
@yaretry.decorate()
def foo(bar):
pass
foo()
```
并将在每次调用之间等待指数级增长的延迟。初始延迟为1秒,每次都会加倍。
PARAMS(超时=60)(BR/>‘BR/> BR/>增加最大重试次数:
‘BR/>回溯=f=yReTest.包(f,yReTr.PARAMS(Max Studio=10))
‘BR/> BR/>改变初始延迟,指数:
BR/>‘BR/>回溯f=yReTest.包(f,yReTr.PARAMS(iTalalSord=0.5),指数=1.2))
当强制转换为bool时将为false:
```
@yaretry.decorate(yaretry.params(retry_on_false=true))
def foo(bar):
如果bar==1:
返回false;将重试
elif bar==2:
返回none;将重试
elif bar==3:
返回false;将不*重试
否则返回:
true
```
仅在出现特定异常或多个异常时重试:
```
@yaretry.decorate(yaretry.params(允许的异常=(
mycustomexception,
lookuperror))
def foo(bar):
如果bar==1:
raise mycustomexception();将重试
elif bar==2:
raise exception()#不会重试并引发异常
否则:
raise keyerror()将重试,因为keyerror子类lookuperror
````
>要自定义的参数的完整列表:
-*timeout*-重试将停止的秒数
-*max\attempts*-重试调用函数的次数,在放弃
-*初始延迟*-第一次重试前等待的秒数
-*最大延迟*-重试之间等待的最大延迟
-*指数*-从重试到重试,延迟乘以此数
-*记录器*-在执行重试时使用提供的记录器进行日志记录
-*引发上次异常*-如果为真,重试完成后,将引发最后一个异常。如果为False(默认值),则引发第一个异常。
-*retry_on_False*-如果函数返回的值'bool(value)==False`
-*allowed_exceptions*-异常类的元组,在引发时,函数将被重试
-*如果重试-cb*-将用抛出的异常调用的回调。如果回调返回true,则函数将重试
-*log_level*-a logging.xxxxx log level,指示在记录重试尝试时使用的日志级别
requests.exceptions.httperror):
返回ex.response.status_code>;=500
如果是instance(ex,requests.exceptions.connectionerror):
返回true
返回false
@yaretry.decorate(yaretry.params(
最大尝试次数=5,
应重试cb=服务器或连接错误)
def调用api(url):
res=请求。get(url)
res.raise关于失败的res()
返回res.json()
````
这是一个小python库,用于用重试逻辑包装或装饰函数。
normal,params)
```
用默认重试逻辑装饰函数:
``python
@yaretry.decorate()
def foo(bar):
pass
foo()
```
并将在每次调用之间等待指数级增长的延迟。初始延迟为1秒,每次都会加倍。
PARAMS(超时=60)(BR/>‘BR/> BR/>增加最大重试次数:
‘BR/>回溯=f=yReTest.包(f,yReTr.PARAMS(Max Studio=10))
‘BR/> BR/>改变初始延迟,指数:
BR/>‘BR/>回溯f=yReTest.包(f,yReTr.PARAMS(iTalalSord=0.5),指数=1.2))
当强制转换为bool时将为false:
```
@yaretry.decorate(yaretry.params(retry_on_false=true))
def foo(bar):
如果bar==1:
返回false;将重试
elif bar==2:
返回none;将重试
elif bar==3:
返回false;将不*重试
否则返回:
true
```
仅在出现特定异常或多个异常时重试:
```
@yaretry.decorate(yaretry.params(允许的异常=(
mycustomexception,
lookuperror))
def foo(bar):
如果bar==1:
raise mycustomexception();将重试
elif bar==2:
raise exception()#不会重试并引发异常
否则:
raise keyerror()将重试,因为keyerror子类lookuperror
````
>要自定义的参数的完整列表:
-*timeout*-重试将停止的秒数
-*max\attempts*-重试调用函数的次数,在放弃
-*初始延迟*-第一次重试前等待的秒数
-*最大延迟*-重试之间等待的最大延迟
-*指数*-从重试到重试,延迟乘以此数
-*记录器*-在执行重试时使用提供的记录器进行日志记录
-*引发上次异常*-如果为真,重试完成后,将引发最后一个异常。如果为False(默认值),则引发第一个异常。
-*retry_on_False*-如果函数返回的值'bool(value)==False`
-*allowed_exceptions*-异常类的元组,在引发时,函数将被重试
-*如果重试-cb*-将用抛出的异常调用的回调。如果回调返回true,则函数将重试
-*log_level*-a logging.xxxxx log level,指示在记录重试尝试时使用的日志级别
requests.exceptions.httperror):
返回ex.response.status_code>;=500
如果是instance(ex,requests.exceptions.connectionerror):
返回true
返回false
@yaretry.decorate(yaretry.params(
最大尝试次数=5,
应重试cb=服务器或连接错误)
def调用api(url):
res=请求。get(url)
res.raise关于失败的res()
返回res.json()
````