1. 程式人生 > >python之_requests庫學習_5(超時與異常)

python之_requests庫學習_5(超時與異常)

一、超時
可以告訴 requests 在經過以 timeout 引數設定的秒數時間之後停止等待響應。
連線超時指的是在你的客戶端實現到遠端機器埠的連線時Request 會等待的秒數。一個很好的實踐方法是把連線超時設為比 3 的倍數略大的一個數值,因為 TCP 資料包重傳視窗 (TCP packet retransmission window) 的預設大小是 3

r = requests.get('https://github.com', timeout=5)

這一 timeout 值將會用作 connectread 二者的 timeout。如果要分別制定,就傳入一個元組:

r = requests.get
('https://github.com', timeout=(3.05, 27))

如果要永遠等待,只需傳入一個None

r = requests.get('https://github.com', timeout=None)

二、錯誤與異常
1、遇到網路問題(如:DNS 查詢失敗、拒絕連線等)時,Requests 會丟擲一個 ConnectionError 異常。
2、如果 HTTP 請求返回了不成功的狀態碼, Response.raise_for_status() 會丟擲一個 HTTPError 異常。
3、若請求超時,則丟擲一個 Timeout 異常。
4、若請求超過了設定的最大重定向次數,則會丟擲一個 TooManyRedirects

異常。
5、所有Requests顯式丟擲的異常都繼承自 requests.exceptions.RequestException