python错误处理机制,python 异常重试
本文将为您介绍一个第三方库——Tenacity(题目中的重试机制并不准确,它不是Python的内置模块,所以不能称之为机制),它实现了几乎所有我们可以使用的重试场景。跟边肖学吧。
00-1010简介1。最基本的重试2。设置停止的基本条件3。设置何时重试4。重试并再次抛出错误5。设置回调函数。
目录
为了避免某些网络或其他不可控因素导致的功能问题。比如发送请求时,网络不稳定,请求经常超时。
在这种情况下,我们通常将重试代码添加到代码中。重试代码本身实现起来并不难,但是如何优雅轻松的写出来才是我们要考虑的问题。
这里要给大家介绍的是一个第三方库——Tenacity(题目中的重试机制不准确,不是Python的内置模块,所以不能称之为机制)。它实现了几乎所有我们能用到的重试场景,喜欢记得收藏,关注,喜欢。
例如:
什么情况下会重试?
重试多少次?
重试需要多长时间?
每次重试的间隔是多长时间?
重试失败后回调?
在使用它之前,你应该安装它。
$ pip安装强度
介绍
无条件重试,重试之间没有间隔。
从tenacity导入重试
@重试
def测试_重试():
打印(等待重试,无间隔重试.)
引发异常
test_retry()
无条件重试,但等待2秒后重试。
从韧性导入重试,wait_fixed
@retry(wait=wait_fixed(2))
def测试_重试():
打印(等待重试.)
引发异常
test_retry()
1. 最基本的重试
仅重试7次。
从tenacity导入重试,尝试后停止
@ retry(stop=stop _ after _ attempt(7))
def测试_重试():
打印(等待重试.)
引发异常
test_retry()
10秒钟后重试。
从tenacity导入重试,延迟后停止
@ retry(stop=stop _ after _ delay(10))
def测试_重试():
打印(等待重试.)
引发异常
test_retry()
或者满足上述两个条件中的一个,则重试结束。
从tenacity导入重试,停止后延迟,停止后尝试
@ retry(stop=(stop _ after _ delay(10) stop _ after _ attempt(7)))
def测试_重试():
打印(等待重试.)
引发异常
test_retry()
2. 设置停止基本条件
如果出现特定错误/异常(如请求超时),请重试。
从请求导入例外
从tenacity导入重试,retry_if_exception_type
@ retry(retry=retry _ if _ exception _ type(exceptions。超时))
def测试_重试():
打印(等待重试.)
引发异常。超时
test_retry()
当满足自定义条件时,请重试。
例如,当test_retry函数的返回值为False时,请重试
从tenacity导入重试,尝试后停止,重试结果
def is_false(值):
返回值为假
@ retry(stop=stop _ after _ attempt(3),
retry=retry_if_result(is_false))
def测试_重试():
返回False
test_retry()
3. 设置何时进行重试
当异常发生时,tenacity将重试。如果重试失败,默认情况下,抛出的异常将成为RetryError,而不是最根本的原因。
因此,您可以添加一个参数(reraise=True ),这样当重试失败时,抛出的异常仍然是原来的那个。
从tenacity导入重试,尝试后停止
@ retry(stop=stop _ after _ attempt(7),reraise=True)
def测试_重试():
打印(等待重试.)
引发异常
test_retry()
4. 重试后错误重新抛出
当最后一次重试失败时,可以执行回调函数。
来自tenacity import *
def return _ last _ value(retry _ state):
打印(“执行回调函数”)
Return _ state.outcome.result () #表示原始函数的返回值。
def is_false(值):
返回值为假
@ retry(stop=stop _ after _ attempt(3),
重试错误回调=返回最后一个值,
retry=retry_if_result(is_false))
def测试_重试():
打印(等待重试.)
返回False
打印(test_retry())
输出如下
正在等待重试。
正在等待重试。
正在等待重试。
执行回调函数
错误的
关于Python中重试机制的这篇文章到此结束。关于Python重试机制的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。