Python?中設(shè)置請(qǐng)求的最大重試次數(shù)示例代碼
本篇文章介紹了為什么我們會(huì)收到錯(cuò)誤消息,指出超出了最大重試次數(shù),以及我們?nèi)绾卧?Python 中為請(qǐng)求設(shè)置 max_retries。 如果服務(wù)器上的負(fù)載導(dǎo)致此錯(cuò)誤,它還會(huì)為我們提供提示。
Python中設(shè)置請(qǐng)求max_retries的錯(cuò)誤,的原因和解決方案
在繼續(xù)查看如何在 Python 中為請(qǐng)求設(shè)置 max_retries 之前,讓我們先解決一些問(wèn)題。
- 首先,如果您的 URL 不正確,就會(huì)發(fā)生此錯(cuò)誤。 因此,您需要檢查您請(qǐng)求的 URL 是否有效。
- 此錯(cuò)誤也可能由于互聯(lián)網(wǎng)連接而發(fā)生,因此請(qǐng)確保您沒(méi)有遇到所有此類問(wèn)題。
- 當(dāng)服務(wù)器過(guò)載時(shí),我們也會(huì)收到此錯(cuò)誤。 當(dāng)服務(wù)器繁忙時(shí),您可能會(huì)遇到此類錯(cuò)誤。
這就是增加請(qǐng)求 URL 的重試次數(shù)的現(xiàn)象來(lái)幫助我們的地方。 因此,讓我們了解如何做到這一點(diǎn)。 但是,首先,看看下面的代碼。
示例代碼:
import requests # increass retries number retries = #enter the number of retires you want to increase requests.adapters.DEFAULT_RETRIES = retries
這是您可以在 Python 中增加 URL 請(qǐng)求的重試次數(shù)的方法,但是如果由于服務(wù)器負(fù)載而出現(xiàn)此錯(cuò)誤,您可以使用以下提示。
> python -m pip install requests
在 Python 中擺脫請(qǐng)求的 Set max_retries 的技巧
如果服務(wù)器上的負(fù)載導(dǎo)致此錯(cuò)誤,您可以使用以下任何提示。
- 禁用 keep_alive
您可以禁用會(huì)話的 keep_alive 功能。 下面的一段代碼解釋了如何做到這一點(diǎn)。
request_session = requests.session() # disable keep_alive request_session.keep_alive = False request_session.get(your_url)
- 使用超時(shí)
當(dāng)服務(wù)器過(guò)載、繁忙或遠(yuǎn)離該位置時(shí),這可能成為您遇到相同錯(cuò)誤的原因。 為避免這種情況,您可以增加響應(yīng)時(shí)間。
您可以使用來(lái)自服務(wù)器的 POST 和 GET 請(qǐng)求來(lái)完成此操作。 例如,看看下面的代碼。
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è)參數(shù)會(huì)增加構(gòu)建時(shí)間,第二個(gè)參數(shù)會(huì)增加響應(yīng)時(shí)間。 下面給出了代碼示例。
req = requests.get(your_url, timeout=(3,6))
- 設(shè)置 backoff_factor(延遲/睡眠)
backoff_factor 是請(qǐng)求用來(lái)初始設(shè)置網(wǎng)絡(luò)連接的 urllib3 參數(shù)。
您還可以設(shè)置 backoff_factor 以增加每次嘗試的嘗試次數(shù)和休眠時(shí)間。
它將避免出現(xiàn)此錯(cuò)誤。 有了這個(gè),你就停止了這段代碼并讓它等待,直到它收到服務(wù)器的響應(yīng)。
下圖說(shuō)明了 backoff_factor 如何在服務(wù)請(qǐng)求失敗時(shí)延遲服務(wù)請(qǐng)求。
#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 是庫(kù)用來(lái)確定重試之間的休眠間隔的基值。
例如,在每次不成功的連接嘗試之后,urllib3 將休眠 {backoff_factor} * (2 (總重試次數(shù) - 1)) 秒。
例如,如果 backoff_factor 設(shè)置為 0.01,sleep() 將在兩次重試之間休眠 0.0s、0.2s、0.4s……。 默認(rèn)情況下退避是不活動(dòng)的(設(shè)置為 0)。
如果返回的狀態(tài)碼是500、502、503、504,會(huì)額外要求重試。 要更好地控制重試,您可以修改重試。
到此這篇關(guān)于如何在 Python 中設(shè)置請(qǐng)求的最大重試次數(shù)的文章就介紹到這了,更多相關(guān) Python設(shè)置請(qǐng)求最大重試次數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python爬蟲(chóng)多次請(qǐng)求超時(shí)的幾種重試方法(6種)
- Python爬蟲(chóng)庫(kù)requests-html進(jìn)行HTTP請(qǐng)求HTML解析等高級(jí)功能應(yīng)用
- Python爬蟲(chóng)請(qǐng)求模塊Urllib及Requests庫(kù)安裝使用教程
- Python網(wǎng)絡(luò)請(qǐng)求使用Requests庫(kù)抓取解析數(shù)據(jù)
- Python中最強(qiáng)大的重試庫(kù)Tenacity使用探索
- 詳解Python如何優(yōu)雅的重試
- 手把手教你實(shí)現(xiàn)Python重試超時(shí)裝飾器
- Python中的請(qǐng)求重試策略深入探討
相關(guān)文章
Python多進(jìn)程multiprocessing、進(jìn)程池用法實(shí)例分析
這篇文章主要介紹了Python多進(jìn)程multiprocessing、進(jìn)程池用法,結(jié)合實(shí)例形式分析了Python多進(jìn)程multiprocessing、進(jìn)程池相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03
離線部署Python環(huán)境的詳細(xì)過(guò)程
本文主要介紹了離線部署Python環(huán)境的全過(guò)程,包括前置工作、部署Python、測(cè)試Python、配置環(huán)境和驗(yàn)證Python五個(gè)步驟,為讀者提供了詳細(xì)的操作指南,希望能對(duì)需要離線部署Python環(huán)境的讀者提供幫助2024-10-10
Python?日期和時(shí)間處理教程之datetime?模塊的使用示例詳解
Python 中的日期不是獨(dú)立的數(shù)據(jù)類型,但我們可以導(dǎo)入一個(gè)名為 datetime 的模塊來(lái)使用日期作為日期對(duì)象,這篇文章主要介紹了Python?日期和時(shí)間處理教程:datetime?模塊的使用,需要的朋友可以參考下2023-10-10
在Pycharm中將pyinstaller加入External Tools的方法
今天小編就為大家分享一篇在Pycharm中將pyinstaller加入External Tools的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
基于Python編寫(xiě)簡(jiǎn)單的網(wǎng)絡(luò)測(cè)試工具
這篇文章主要為大家詳細(xì)介紹了如何基于Python編寫(xiě)一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)測(cè)試工具,可以測(cè)試網(wǎng)絡(luò)的下載速度,上傳速度和延遲,感興趣的可以了解下2025-02-02
Python英文文章詞頻統(tǒng)計(jì)(14份劍橋真題詞頻統(tǒng)計(jì))
這篇文章主要介紹了Python英文文章詞頻統(tǒng)計(jì)(14份劍橋真題詞頻統(tǒng)計(jì)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

