1. 程式人生 > >python3 requests出錯重試解決方法

python3 requests出錯重試解決方法

對python3下的requests使用並不是很熟練,今天稍微用了下,請求幾次下來後發現出現連線超時的異常,上網查了下,找到了一個還算中肯的解決方法。

retrying是python的一個自帶的重試包

匯入方式:

from retrying import retry
簡單使用

retrying 這個包的用法原理就是在你不知道那段程式碼塊是否會發生異常,若發生異常,可以再次執行該段的程式碼塊,如果沒有發生異常,那麼就繼續執行往下執行程式碼塊

以前你的程式碼可能是這樣寫的:

def get_html(url):
 pass

def log_error(url):
 pass
url = "" try: get_page(url) except: log_error(url)

也有可能是這樣子寫的:

# 請求超過十次就放棄
attempts = 0
success = False
while attempts < 10 and not success:
 try:
  get_html(url)
  success = True
 except:
  attempts += 1
  if attempts == 10:
   break

使用 retrying 的寫法:

import random
from retrying import
retry @retry() def do_something_unreliable(): if random.randint(0, 10) > 1: raise IOError("Broken sauce, everything is hosed!!!111one") else: return "Awesome sauce!" result = do_something_unreliable() print(result)

上面的是簡單的用法,你可以試下,下面是一些可選引數的使用方式。

  • stop_max_attempt_number
    用來設定最大的嘗試次數,超過該次數就停止重試
  • stop_max_delay
    超過時間段,函式就不會再執行了
  • wait_random_min和wait_random_max
    用隨機的方式產生兩次retrying之間的停留時間

————————————— 下面是廣告 ————————————————

個人微信:hll643435675(備註:部落格)

更多資源請訪問:

陸續優化中,後續會開發更多更好玩的有趣的小工具

————————————— 上面是廣告 ————————————————