在Python中,您可以使用requests
庫來實現類似于cURL的重試機制
pip install requests
接下來,您可以使用以下代碼實現重試機制:
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
def requests_retry(retries=3, backoff_factor=0.3, status_forcelist=(500, 502, 504), session=None):
session = session or requests.Session()
retry = Retry(
total=retries,
read=retries,
connect=retries,
backoff_factor=backoff_factor,
status_forcelist=status_forcelist,
)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
return session
url = "https://example.com" # 替換為您要請求的URL
try:
response = requests_retry().get(url)
response.raise_for_status() # 如果響應狀態碼不是200,將拋出異常
print(response.text)
except requests.exceptions.RequestException as e:
print(f"請求失敗,錯誤信息:{e}")
在這個示例中,我們定義了一個名為requests_retry
的函數,該函數接受以下參數:
retries
:重試次數,默認為3次。backoff_factor
:指數補償因子,默認為0.3秒。status_forcelist
:要強制重試的狀態碼列表,默認為(500, 502, 504)
。requests_retry
函數創建一個Session
對象,然后為其安裝一個HTTPAdapter
,該適配器使用指定的重試策略。最后,我們使用get
方法發出請求,并使用raise_for_status
方法檢查響應狀態碼。如果狀態碼不是200,將拋出異常。