首頁 >後端開發 >Python教學 >request timeout是什麼意思

request timeout是什麼意思

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-06-14 09:34:1952875瀏覽

逾時(timeout)

為防止伺服器無法及時回應,發送至外部伺服器的大部分請求都應該帶著 timeout 參數。在預設情況下,除非明確指定了 timeout 值,requests 是不會自動進行逾時處理的。如果沒有 timeout,你的程式碼可能會掛起若干分鐘甚至更久。

request 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn