一、简介
retry是一个用于错误处理的模块,功能类似try-except,但更加快捷方便,本文就将简单地介绍一下retry的基本用法。
二、基本用法
retry-作为装饰器进行使用,不传入参数时功能如下例所示:
from retry import retry @retry() def make_trouble(): '''Retry until succeed''' print ('retrying...') raise if __name__ == '__main__': make_trouble() # 输出: 一直重试,直到运行成功 retrying... retrying... retrying... retrying... retrying... retrying...
讯享网
三、retry 参数介绍
讯享网def retry(exceptions=Exception, tries=-1, delay=0, max_delay=None, backoff=1, jitter=0, logger=logging_logger): """Return a retry decorator. :param exceptions: an exception or a tuple of exceptions to catch. default: Exception. :param tries: the maximum number of attempts. default: -1 (infinite). :param delay: initial delay between attempts. default: 0. :param max_delay: the maximum value of delay. default: None (no limit). :param backoff: multiplier applied to delay between attempts. default: 1 (no backoff). :param jitter: extra seconds added to delay between attempts. default: 0. fixed if a number, random if a range tuple (min, max) :param logger: logger.warning(fmt, error, delay) will be called on failed attempts. default: retry.logging_logger. if None, logging is disabled. """
可以看到,retry()在这里的功能,是在其装饰的函数运行报错后重新运行该函数,在上例中的效果就是反复运行make_trouble(),这也是retry()的基本用法,下面介绍其几个主要参数:
- exceptions:传入指定的错误类型,默认为Exception,即捕获所有类型的错误,也可传入元组形式的多种指定错误类型。
- tries:定义捕获错误之后重复运行次数,默认为-1,即为无数次。
- delay:定义每次重复运行之间的停顿时长,单位秒,默认为0,即无停顿。
- backoff:呈指数增长的每次重复运行之间的停顿时长,需要配合delay来使用,譬如delay设置为3,backoff设置为2,则第一次间隔为
3*2^0=3秒,第二次3*2^1=6秒,第三次3*2^2=12秒,以此类推,默认为1。 - max_delay:定义backoff和delay配合下出现的等待时间上限,当delay*backoffn大于max_delay时,等待间隔固定为该值而不再增长。
附录:git源码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46521.html