成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Python重試機(jī)制是什么,下文給大家解答

89542767 / 778人閱讀


  小編寫這篇文章的主要目的,主要是給大家講解一下,關(guān)于Python機(jī)制的一些問(wèn)題,比如重新調(diào)試的機(jī)制是什么呢?應(yīng)用到它的場(chǎng)景還是很多的,下面跟小編一塊去學(xué)習(xí)吧。


  介紹:


  為了避免網(wǎng)絡(luò)問(wèn)題出現(xiàn)的錯(cuò)誤,比如網(wǎng)絡(luò)延遲或者是宕機(jī),往往都會(huì)出現(xiàn)請(qǐng)求超時(shí)的問(wèn)題。


  這里要給大家介紹的是一個(gè)第三方庫(kù)-Tenacity(標(biāo)題中的重試機(jī)制并并不準(zhǔn)確,它不是Python的內(nèi)置模塊,因此并不能稱之為機(jī)制),它實(shí)現(xiàn)了幾乎我們可以使用到的所有重試場(chǎng)景,喜歡記得收藏、關(guān)注、點(diǎn)贊。


  比如:


  在什么情況下才進(jìn)行重試?


  重試幾次呢?


  重試多久后結(jié)束?


  每次重試的間隔多長(zhǎng)呢?


  重試失敗后的回調(diào)?


  在使用它之前,先要安裝它

  $pip install tenacity


  1.最基本的重試


  無(wú)條件重試,重試之間無(wú)間隔


   from tenacity import retry
   retry
  def test_retry():
  print("等待重試,重試無(wú)間隔執(zhí)行...")
  raise Exception
  test_retry()


  無(wú)條件重試,但是在重試之前要等待2秒


  from tenacity import retry,wait_fixed
   retry(wait=wait_fixed(2))
  def test_retry():
  print("等待重試...")
  raise Exception
  test_retry()


  2.設(shè)置停止基本條件


  只重試7次


  from tenacity import retry,stop_after_attempt
   retry(stop=stop_after_attempt(7))
  def test_retry():
  print("等待重試...")
  raise Exception
  test_retry()


  重試10秒后不再重試


  from tenacity import retry,stop_after_delay
   retry(stop=stop_after_delay(10))
  def test_retry():
  print("等待重試...")
  raise Exception
  test_retry()


  或者上面兩個(gè)條件滿足一個(gè)就結(jié)束重試


  from tenacity import retry,stop_after_delay,stop_after_attempt
   retry(stop=(stop_after_delay(10)|stop_after_attempt(7)))
  def test_retry():
  print("等待重試...")
  raise Exception
  test_retry()


  3.設(shè)置何時(shí)進(jìn)行重試


  在出現(xiàn)特定錯(cuò)誤/異常(比如請(qǐng)求超時(shí))的情況下,再進(jìn)行重試
  from requests import exceptions
  from tenacity import retry,retry_if_exception_type
   retry(retry=retry_if_exception_type(exceptions.Timeout))
  def test_retry():
  print("等待重試...")
  raise exceptions.Timeout
  test_retry()


  在滿足自定義條件時(shí),再進(jìn)行重試。


  如下示例,當(dāng)test_retry函數(shù)返回值為False時(shí),再進(jìn)行重試


  from tenacity import retry,stop_after_attempt,retry_if_result
  def is_false(value):
  return value is False
   retry(stop=stop_after_attempt(3),
  retry=retry_if_result(is_false))
  def test_retry():
  return False
  test_retry()


  4.重試后錯(cuò)誤重新拋出


  當(dāng)出現(xiàn)異常后,tenacity會(huì)進(jìn)行重試,若重試后還是失敗,默認(rèn)情況下,往上拋出的異常會(huì)變成RetryError,而不是最根本的原因。


  因此可以加一個(gè)參數(shù)(reraise=True),使得當(dāng)重試失敗后,往外拋出的異常還是原來(lái)的那個(gè)。


  from tenacity import retry,stop_after_attempt
   retry(stop=stop_after_attempt(7),reraise=True)
  def test_retry():
  print("等待重試...")
  raise Exception
  test_retry()


  5.設(shè)置回調(diào)函數(shù)


  當(dāng)最后一次重試失敗后,可以執(zhí)行一個(gè)回調(diào)函數(shù)


  from tenacity import*
  def return_last_value(retry_state):
  print("執(zhí)行回調(diào)函數(shù)")
  return retry_state.outcome.result()#表示返回原函數(shù)的返回值
  def is_false(value):
  return value is False
   retry(stop=stop_after_attempt(3),
  retry_error_callback=return_last_value,
  retry=retry_if_result(is_false))
  def test_retry():
  print("等待重試中...")
  return False
  print(test_retry())


  輸出如下


  等待重試中...


  等待重試中...


  等待重試中...


  執(zhí)行回調(diào)函數(shù)


  False


  至此,小編就為大家介紹到這里了,希望可以給各位讀者帶來(lái)幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/127998.html

相關(guān)文章

  • Python獲取線程返回值的三種方式分別什么?下文大家解答

      小編寫這篇文字的一個(gè)主要目的,主要是給大家解答關(guān)于python的一些相關(guān)事宜,主要涉及到內(nèi)容是如何利用其python獲取返回值,那么,返回值的三種方式分別是什么呢?具體的內(nèi)容,下面就給大家詳細(xì)的做出解答?! √岬骄€程,你的大腦應(yīng)該有這樣的印象:我們可以控制它何時(shí)開始,卻無(wú)法控制它何時(shí)結(jié)束,那么如何獲取線程的返回值呢?今天就分享一下自己的一些做法?! 》椒ㄒ弧 ∈褂萌肿兞康牧斜恚瑏?lái)保存返回值 ...

    89542767 評(píng)論0 收藏0
  • Python必考五大面試題什么?下文大家解答

      小編寫這篇文章的一個(gè)主要目的,主要是來(lái)給大家做個(gè)介紹,介紹的內(nèi)容主要是涉及到Python一些試題的講解,小編給大家總結(jié)出來(lái)了五道必考的題目,大家可要仔細(xì)閱讀哦,下面就給大家詳細(xì)解答。  1、使用while循環(huán)實(shí)現(xiàn)輸出2-3+4-5+6...+100的和  #方法一   #從2開始計(jì)算   i=2   #定義一個(gè)變量用于保存結(jié)果   sum=0   whilei<=100:   i...

    89542767 評(píng)論0 收藏0
  • Python numpy和matlab有什么區(qū)別?下文大家解答

      小編寫這篇文章的主要目的,主要是給大家介紹關(guān)于Python numpy和matlab區(qū)別的介紹,具體區(qū)別,下文給大家詳細(xì)的解答?! umpy和matlab的幾點(diǎn)差異  Python numpy和matlab都是便捷靈活的科學(xué)計(jì)算語(yǔ)言,兩者具有很多相似之處,但也有一些混淆的地方,這里假定你熟悉matlab,但不了解numpy,記錄幾個(gè)numpy實(shí)例:  1、Numpy數(shù)組索引指定開始和結(jié)束時(shí) ...

    89542767 評(píng)論0 收藏0
  • Python代碼引用模塊方法什么?請(qǐng)仔細(xì)閱讀下文

      小編寫這篇文章的主要目的,主要是給大家來(lái)做一個(gè)解答,解答的內(nèi)容是關(guān)于Python代碼的事宜,將會(huì)教給大家如何使用Python去引用相關(guān)的模塊,那么,具體的引用方法是什么呢?有什么技巧可言呢?下面就給大家詳細(xì)解答下?! ∑綍r(shí)寫的一些Python的代碼,需要在其他模塊里面復(fù)用。最粗狂的方法就是直接copy過(guò)去?! 〉@種方式太麻煩,copy一堆代碼,導(dǎo)致代碼量也很多。copy的也不爽?! ∠旅婢徒?..

    89542767 評(píng)論0 收藏0
  • Python pygame如何實(shí)現(xiàn)拼圖游戲?下文大家解答

      Python pygame作為一門常見的技能,其實(shí),它的應(yīng)用范圍還是比較的廣泛的,那么,它是怎么實(shí)現(xiàn)其拼圖游戲呢?下面就以案例的形式,去給大家做個(gè)解答,下面就給大家詳細(xì)解答下。  pygame介紹  Python Pygame是一款專門為開發(fā)和設(shè)計(jì)2D電子游戲而生的軟件包,它支Windows、Linux、Mac OS等操作系統(tǒng),具有良好的跨平臺(tái)性。Pygame由Pete Shinners于20...

    89542767 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<