python requests請求之timeout參數


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
------------------------------------------------------------------------
翻譯:傳遞(連接、讀取)超時元組或單個浮點數,將兩個超時設置為相同的值

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM