requests請求之timeout參數
1、python 的requests請求都可以使用timeout參數。
2、timeout參數可以傳入一個簡單的浮點數,它將請求的連接部分和讀取部分設為相同的超時時間。
3、timeout參數也可以傳入一個包含兩個簡單浮點數的元組,用來分別設置請求超時時間和讀取超時時間。
舉例說明:
1、傳入簡單浮點數:
import requests # 設置超時時間為1秒: r = requests.get("https://gethub.com", timeout=1) print(r.status_code) ------------------------------------------------------------------------ 執行結果: requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='gethub.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.VerifiedHTTPSConnection object at 0x000001B820359248>, 'Connection to gethub.com timed out. (connect timeout=1)')) 因為在1秒的連接時間內沒有連接到服務器,所以就會報連接超時的錯誤,如上。
上方代碼僅將timeout參數傳入了一個簡單浮點數,這個傳入值不一定是個整數,也可以是0.1,0.05這些浮點數。
2、傳入元組:
import requests # 傳入元組將分別作為連接,讀取的超時時間 r = requests.get("https://baidu.com", timeout=(0.01, 0.01)) print(r.status_code) ------------------------------------------------------------------------ 執行結果: requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='baidu.com', port=443): Read timed out. (read timeout=0.01) 因為讀取時間設置的比較短,所以產生了讀取超時錯誤
3、如果想永久等待,可以將timeout的參數值設為None或者不設置該參數:
r = requests.get("https://baidu.com", timeout=None) r = requests.get("https://baidu.com")
【注意】如果你傳入三個參數,python會以錯誤的方式提示你這個參數都有什么傳入值如下:
Pass a (connect, read) timeout tuple, or a single float to set both timeouts to the same value ------------------------------------------------------------------------ 翻譯:傳遞(連接、讀取)超時元組或單個浮點數,將兩個超時設置為相同的值