Python?中設(shè)置請求的最大重試次數(shù)示例代碼
本篇文章介紹了為什么我們會收到錯誤消息,指出超出了最大重試次數(shù),以及我們?nèi)绾卧?Python 中為請求設(shè)置 max_retries。 如果服務(wù)器上的負(fù)載導(dǎo)致此錯誤,它還會為我們提供提示。
Python中設(shè)置請求max_retries的錯誤,的原因和解決方案
在繼續(xù)查看如何在 Python 中為請求設(shè)置 max_retries 之前,讓我們先解決一些問題。
- 首先,如果您的 URL 不正確,就會發(fā)生此錯誤。 因此,您需要檢查您請求的 URL 是否有效。
- 此錯誤也可能由于互聯(lián)網(wǎng)連接而發(fā)生,因此請確保您沒有遇到所有此類問題。
- 當(dāng)服務(wù)器過載時,我們也會收到此錯誤。 當(dāng)服務(wù)器繁忙時,您可能會遇到此類錯誤。
這就是增加請求 URL 的重試次數(shù)的現(xiàn)象來幫助我們的地方。 因此,讓我們了解如何做到這一點。 但是,首先,看看下面的代碼。
示例代碼:
import requests # increass retries number retries = #enter the number of retires you want to increase requests.adapters.DEFAULT_RETRIES = retries
這是您可以在 Python 中增加 URL 請求的重試次數(shù)的方法,但是如果由于服務(wù)器負(fù)載而出現(xiàn)此錯誤,您可以使用以下提示。
> python -m pip install requests
在 Python 中擺脫請求的 Set max_retries 的技巧
如果服務(wù)器上的負(fù)載導(dǎo)致此錯誤,您可以使用以下任何提示。
- 禁用 keep_alive
您可以禁用會話的 keep_alive 功能。 下面的一段代碼解釋了如何做到這一點。
request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
- 使用超時
當(dāng)服務(wù)器過載、繁忙或遠(yuǎn)離該位置時,這可能成為您遇到相同錯誤的原因。 為避免這種情況,您可以增加響應(yīng)時間。
您可以使用來自服務(wù)器的 POST 和 GET 請求來完成此操作。 例如,看看下面的代碼。
import requests #the time in seconds in this example is increasing time by 5 req = requests.get(your_url, timeout=5) req = requests.post(your_url, timeout=5)
您還可以在超時參數(shù)中使用元組。 第一個參數(shù)會增加構(gòu)建時間,第二個參數(shù)會增加響應(yīng)時間。 下面給出了代碼示例。
req = requests.get(your_url, timeout=(3,6))
- 設(shè)置 backoff_factor(延遲/睡眠)
backoff_factor 是請求用來初始設(shè)置網(wǎng)絡(luò)連接的 urllib3 參數(shù)。
您還可以設(shè)置 backoff_factor 以增加每次嘗試的嘗試次數(shù)和休眠時間。
它將避免出現(xiàn)此錯誤。 有了這個,你就停止了這段代碼并讓它等待,直到它收到服務(wù)器的響應(yīng)。
下圖說明了 backoff_factor 如何在服務(wù)請求失敗時延遲服務(wù)請求。
#you can set a backoff factor means delay/sleep time in each retry
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
#initailize the request session
request_session = requests.Session()
#initailizing retry object
#you can increase the number of total retires and sleep time of each retry
retries = Retry(total=3, backoff_factor=1)
adapter = HTTPAdapter(max_retries=retry)
request_session.mount('http://', adapter)
request_session.get(your_url)根據(jù) urllib3 文檔,backoff_factor 是庫用來確定重試之間的休眠間隔的基值。
例如,在每次不成功的連接嘗試之后,urllib3 將休眠 {backoff_factor} * (2 (總重試次數(shù) - 1)) 秒。
例如,如果 backoff_factor 設(shè)置為 0.01,sleep() 將在兩次重試之間休眠 0.0s、0.2s、0.4s……。 默認(rèn)情況下退避是不活動的(設(shè)置為 0)。
如果返回的狀態(tài)碼是500、502、503、504,會額外要求重試。 要更好地控制重試,您可以修改重試。
到此這篇關(guān)于如何在 Python 中設(shè)置請求的最大重試次數(shù)的文章就介紹到這了,更多相關(guān) Python設(shè)置請求最大重試次數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python函數(shù)中return后的語句一定不會執(zhí)行嗎?
這篇文章主要給大家詳細(xì)分析講解了關(guān)于python函數(shù)中return語句后的語句是否一定不會執(zhí)行的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
從零開始的TensorFlow+VScode開發(fā)環(huán)境搭建的步驟(圖文)
這篇文章主要介紹了從零開始的TensorFlow+VScode開發(fā)環(huán)境搭建的步驟(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Python使用Tkinter開發(fā)一個桌面待辦事項應(yīng)用
文章介紹了Tkinter,Python標(biāo)準(zhǔn)庫自帶的GUI庫,適合初學(xué)者入門,不需要額外安裝環(huán)境,文章通過一個完整的待辦事項應(yīng)用項目,詳細(xì)講解了Tkinter的基本用法,包括創(chuàng)建窗口、放置控件、響應(yīng)事件、保存數(shù)據(jù)等,文章還列舉了一些常見的Tkinter應(yīng)用場景,需要的朋友可以參考下2026-05-05

