python 多线程编程,python多线程有几种实现方法,都是什么

  python 多线程编程,python多线程有几种实现方法,都是什么

  在程序开发中,经常需要请求外部接口资源。另外,每一个要求都不一定成功。因此,与这些网络请求相关联的代码片段必须添加重试机制。介绍Python中的重试方法。

  添加循环判定最简单的方法是将循环添加到需要重试的代码段,捕捉程序中的异常,如果执行成功则退出循环,如果执行失败则重复相关代码。例如:

  importrequestsdefreq _ with _ Retry(URL):Retry _ max=10 #对于范围(1) 1中的I,最大重试次数为10,Retry_max 1): try: print(第二个请求(。format(I)) #这里是ConnectTimeout异常RES=requests.get(URL,timeout=1不能抛出)data) BreakEXCEPT请求。例外情况。ConnectTimeoutase:continue # URL req _ with \

  因为请求了一个不存在的URL,我再次尝试,知道最大次数已经达到10次。但是这有一定的代码入侵,在业务逻辑中加入循环判断是不光彩的。别急,往下看,有更好的办法。

  重试retrying是Python的第三方库,提供了装修业务函数执行失败时会重新执行的装修函数重试。默认情况下,如果报告了错误,将会重试,直到执行成功。

  您可以使用pip install重试安装。

  例如,下面的代码使用生成的随机数来模拟企业的成功和失败。如果生成的随机数大于2,则视为失败,再次尝试,直到生成的随机数小于2。

  importrandomfromretringimportry @ retryrandom _ with _ retry(3360 ifrandom . randint)0,10) 2: print(或更高版本)

  在retry中,还可以在源代码中的Retrying类的初始化函数中指定可选参数。

  Stop_max_attempt_number:最大重试次数。如果超过这个数,stop_max_delay:最大延迟时间(重试这个方法的总时间);如果超过这个时间,wait_fixed就会停止。两次重试之间的等待时间wait_random_min和wait_random_max随机生成两次重试之间的等待时间wait _ increasing _ starting fixed time wait _ exp on以指数方式生成两次重试之间的等待时间,用值2^previous_attempt_number _ number生成的previous_attempt_number是以前重试的次数,值为wait _ expones _ ner。特别注意接收函数的retry_on_exception参数很重要,如下所示:

  #判断为异常defis_myerror(exception): print),exception(exception)print)is instance)exception,)ValueError,IOError,con) ValueError,IOError,Error)@ retry(retry _ on _ exception=is _ my Error)def random _ with _ retry): 从0到10随机,2 2 10) 2: print))大于2,重试。)(提升值错误)(大于2))小于print) random_with_retry。

  这里,retry_on_exception参数的总体思路是接收一个自定义函数is_MyError。在is_MyError函数中,ValueError,IOError,ConnectionError。如果random_with_retry()函数抛出异常,函数is_MyError))将确定返回的函数是真还是假。如果是真的,继续再试;如果为False,立即停止并抛出异常。

  还有retry_on_result参数,它接收在确定业务函数返回哪些结果时需要重试的函数。类似于retry_on_exception参数。

  我们可以根据自己的需求合理组合这些参数,达到想要的效果。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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