簡體   English   中英

在Python請求get或post方法上干凈地設置max_retries

[英]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. 請求不再提供配置方法

  2. 重試次數特定於正在使用的適配器,而不是會話或特定請求。

  3. 如果一個請求需要一個特定的最大請求數,那對於不同的請求就足夠了。

這一變化是在一年多前的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM