逾時(timeout)
為防止伺服器無法及時回應,發送至外部伺服器的大部分請求都應該帶著 timeout 參數。在預設情況下,除非明確指定了 timeout 值,requests 是不會自動進行逾時處理的。如果沒有 timeout,你的程式碼可能會掛起若干分鐘甚至更久。
連線逾時指的是當你的客戶端實作到遠端機器連接埠的連線時(對應的是 connect() ),Request 會等待的秒數。一個很好的實作方法是把連線逾時設為比 3 的倍數略大的一個數值,因為 TCP 封包重傳視窗 (TCP packet retransmission window) 的預設大小是 3。
在爬蟲代理這一塊我們常常會遇到請求超時的問題,程式碼就卡在哪裡,不報錯也沒有requests請求的回應。
相關推薦:《python影片教學》
#通常的處理是在requests.get()語句中加入timeout限制請求時間。
req = requests.get(url, headers=headers, proxies=proxies, timeout=5)
如果發現設定timeout=5後長時間不回應問題依然存在,可以將timeout裡的參數細化
作如下修改後,問題就消失了
req = requests.get(url, headers=headers, proxies=proxies, timeout=(3,7))
timeout傳入一個元組(3,7)第一位是connect連線的逾時時間,第二位是read讀取的逾時時間
如果在使用timeout過程中遇到ValueError錯誤提示(類似:ValueError: Timeout value connect was Timeout(connect=2.0, read=2.0, total=None), but it must be an int or float. ),這是python-requests version 2.4.3-4版本的一個bug需要我們更新一下requests
pip install -U requests
以上是request timeout是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!