python之_requests庫學習_5(超時與異常)
阿新 • • 發佈:2019-02-02
一、超時
可以告訴 requests
在經過以 timeout
引數設定的秒數時間之後停止等待響應。
連線超時指的是在你的客戶端實現到遠端機器埠的連線時Request 會等待的秒數。一個很好的實踐方法是把連線超時設為比 3 的倍數略大的一個數值,因為 TCP 資料包重傳視窗 (TCP packet retransmission window) 的預設大小是 3
r = requests.get('https://github.com', timeout=5)
這一 timeout
值將會用作 connect
和 read
二者的 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
。