我想強制所有請求重試一些5xx HTTP狀態代碼。我會做什麼是:Python請求 - 如何爲創建的會話設置默認重試對象?
retry = requests.packages.urllib3.util.retry.Retry(
total=20,
backoff_factor=0.1,
status_forcelist=[500, 502, 503, 504],
method_whitelist=frozenset(['GET', 'POST']))
for adapter in session.adapters.values():
adapter.max_retries = retry
但我需要做的是現有的代碼與不同的模塊/包中有很多不同的會話。其中一些使用s = Session(); s.get()
,其他使用requests.get()
。所以,我想迫使他們都使用這個實例。
是否可以在requests
程序包級別(通過初始化,設置,簡單的猴子修補程序requests
包)執行?
import requests
# Initialize/setup/patch requests package.
???
# Following should retry on server errors:
requests.Session().get('http://httpstat.us/500')
requests.post('http://httpstat.us/500', data={})
我試圖設置requests.adapters.DEFAULT_RETRIES
到retry
對象。但是,這是不是它是如何工作...