python错误处理机制,python 异常重试

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: