python3 requests出錯重試解決方法
阿新 • • 發佈:2019-01-09
對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(備註:部落格)
更多資源請訪問:
陸續優化中,後續會開發更多更好玩的有趣的小工具
————————————— 上面是廣告 ————————————————