2014-01-27 82 views

回答

25

快速搜索python-requests docsreveal exactly how to set 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. 重試次數特定於第e適配器被使用,而不是會話或特定請求。

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

這項修改是在一年前的請求中引入的。我們有目的地保留了2.0,因爲它最有意義。我們也不會引入參數來配置最大重試次數或其他任何事情,以防您想要問。


編輯使用類似的方法可以實現在重試是如何工作的一個更精細的控制。你可以閱讀this以獲得良好的感覺。總之,你需要從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)