[英]Cleanly setting max_retries on Python requests get or post method
與舊版本的請求相關問題: 我可以為requests.request設置max_retries嗎?
我還沒有看到一個示例,在max_retries
requests.get()
或requests.post()
調用中干凈地合並max_retries
。
會愛一個
requests.get(url, max_retries=num_max_retries))
履行
快速搜索python-requests文檔將准確揭示在使用Session
時如何設置max_retries
。
要直接從文檔中提取代碼:
import requests
s = requests.Session()
a = requests.adapters.HTTPAdapter(max_retries=3)
b = requests.adapters.HTTPAdapter(max_retries=3)
s.mount('http://', a)
s.mount('https://', b)
s.get(url)
但是,您要查找的內容由於以下幾個原因而無法配置:
請求不再提供配置方法
重試次數特定於正在使用的適配器,而不是會話或特定請求。
如果一個請求需要一個特定的最大請求數,那對於不同的請求就足夠了。
這一變化是在一年多前的1.0請求中引入的。 我們故意將它保留為2.0,因為它最有意義。 如果您考慮詢問,我們也不會引入參數來配置最大重試次數或其他任何內容。
編輯使用類似的方法,您可以更好地控制重試的工作方式。 您可以閱讀此內容以獲得良好的感覺。 簡而言之,您需要從urllib3
導入Retry
類(見下文)並告訴它如何表現。 我們將其傳遞給urllib3
,您將有更好的選項來處理重試。
from requests.packages.urllib3 import Retry
import requests
# Create a session
s = requests.Session()
# Define your retries for http and https urls
http_retries = Retry(...)
https_retries = Retry(...)
# Create adapters with the retry logic for each
http = requests.adapters.HTTPAdapter(max_retries=http_retries)
https = requests.adapters.HTTPAdapter(max_retries=https_retries)
# Replace the session's original adapters
s.mount('http://', http)
s.mount('https://', https)
# Start using the session
s.get(url)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.