python retry模块使用指南

retry模块是需要额外的安装包。

1. 基本功能

该模块主要用于多次尝试某一函数。本质上就是一个封装了的装饰器。

1.1 装饰器retry

1.1.1 导入

from retry import retry
# 或者
from retry.api import retry

1.1.2 函数说明

retry(exceptions=Exception, tries=-1, delay=0, max_delay=None, backoff=1, jitter=0, logger=logging_logger)
  • exceptions: 获取报错的类型

  • logger: 答应日志的logger

  • tries: 重复尝试的次数。

    • 默认-1,代表无穷次
  • delay: 重复尝试之间的时间间隔。

    • 默认为0,代表没有间隔
  • backoff: 重复尝试之间间隔时间的乘子,即前一次是后一次的多少倍

    • 默认为1,代表后一次的时间间隔与前一次的时间间隔一样。
  • jitter: 重复尝试之间间隔时间增加量,即前一次是后一次多的时间

    • 默认为0,代表后一次的时间间隔与前一次的时间间隔一样。
    • 给数值时,则增加该数值
    • 若给的是二维tuple,则增加至为范围内的随机数
  • max_delay: 重复尝试之间间隔时间的最大值

    • 默认为None,即无穷大
  • 说明:

    • 关于重复尝试之间的时间间隔公式如下:
      d ( n ) :代表第n次结束之后的间隔时间 d ( 1 ) = d e l a y d ( n + 1 ) = min ⁡ ( d ( n ) ∗ b a c k o f f + j i t t e r , m a x _ d e l a y ) d(n) \text{:代表第n次结束之后的间隔时间} \\ d(1) = delay \\ d(n+1) = \min(d(n)*backoff+jitter, max\_delay) d(n):代表第n次结束之后的间隔时间d(1)=delayd(n+1)=min(d(n)backoff+jitter,max_delay)

1.1.3 函数测试

@retry((ValueError, TypeError), tries=8, delay=0.1, backoff=2, jitter=0.1, max_delay=1)
def make_trouble():
    """
    Retry on ValueError or TypeError, sleep 0.1, 0.3, 0.7, 1, 1, ... seconds between attempts.
    """
    print(1, time.time())
    raise ValueError('a')

if __name__ == '__main__':
    make_trouble()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值