Python?中設置請求的最大重試次數(shù)示例代碼
本篇文章介紹了為什么我們會收到錯誤消息,指出超出了最大重試次數(shù),以及我們如何在 Python 中為請求設置 max_retries。 如果服務器上的負載導致此錯誤,它還會為我們提供提示。
Python中設置請求max_retries的錯誤,的原因和解決方案
在繼續(xù)查看如何在 Python 中為請求設置 max_retries 之前,讓我們先解決一些問題。
- 首先,如果您的 URL 不正確,就會發(fā)生此錯誤。 因此,您需要檢查您請求的 URL 是否有效。
- 此錯誤也可能由于互聯(lián)網(wǎng)連接而發(fā)生,因此請確保您沒有遇到所有此類問題。
- 當服務器過載時,我們也會收到此錯誤。 當服務器繁忙時,您可能會遇到此類錯誤。
這就是增加請求 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ù)的方法,但是如果由于服務器負載而出現(xiàn)此錯誤,您可以使用以下提示。
> python -m pip install requests
在 Python 中擺脫請求的 Set max_retries 的技巧
如果服務器上的負載導致此錯誤,您可以使用以下任何提示。
- 禁用 keep_alive
您可以禁用會話的 keep_alive 功能。 下面的一段代碼解釋了如何做到這一點。
request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
- 使用超時
當服務器過載、繁忙或遠離該位置時,這可能成為您遇到相同錯誤的原因。 為避免這種情況,您可以增加響應時間。
您可以使用來自服務器的 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ù)會增加構建時間,第二個參數(shù)會增加響應時間。 下面給出了代碼示例。
req = requests.get(your_url, timeout=(3,6))
- 設置 backoff_factor(延遲/睡眠)
backoff_factor 是請求用來初始設置網(wǎng)絡連接的 urllib3 參數(shù)。
您還可以設置 backoff_factor 以增加每次嘗試的嘗試次數(shù)和休眠時間。
它將避免出現(xiàn)此錯誤。 有了這個,你就停止了這段代碼并讓它等待,直到它收到服務器的響應。
下圖說明了 backoff_factor 如何在服務請求失敗時延遲服務請求。
#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 設置為 0.01,sleep() 將在兩次重試之間休眠 0.0s、0.2s、0.4s……。 默認情況下退避是不活動的(設置為 0)。
如果返回的狀態(tài)碼是500、502、503、504,會額外要求重試。 要更好地控制重試,您可以修改重試。
到此這篇關于如何在 Python 中設置請求的最大重試次數(shù)的文章就介紹到這了,更多相關 Python設置請求最大重試次數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python多進程multiprocessing、進程池用法實例分析
這篇文章主要介紹了Python多進程multiprocessing、進程池用法,結合實例形式分析了Python多進程multiprocessing、進程池相關概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-03-03Python?日期和時間處理教程之datetime?模塊的使用示例詳解
Python 中的日期不是獨立的數(shù)據(jù)類型,但我們可以導入一個名為 datetime 的模塊來使用日期作為日期對象,這篇文章主要介紹了Python?日期和時間處理教程:datetime?模塊的使用,需要的朋友可以參考下2023-10-10在Pycharm中將pyinstaller加入External Tools的方法
今天小編就為大家分享一篇在Pycharm中將pyinstaller加入External Tools的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python英文文章詞頻統(tǒng)計(14份劍橋真題詞頻統(tǒng)計)
這篇文章主要介紹了Python英文文章詞頻統(tǒng)計(14份劍橋真題詞頻統(tǒng)計),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-10-10