我正在嘗試使用HTTPConnection
(2.7.8)發出請求,並使用HTTPConnection(host, timeout=10)
將超時設置爲10。但是,HTTPConnection.request()
在10秒後似乎沒有超時。事實上,HTTPConnection.timeout
甚至不似乎被HTTPConnection.request()
讀取(它只能通過HTTPConnection.connect()
讀。我的理解是否正確?是timeout
只適用於connect()
而不是request()
?有沒有辦法超時request()
?HTTPConnection.request不尊重超時?
更新:
我想我已經縮小了問題的進一步下降。如果我不提供方案,也不會尊重套接字超時如果所提供的方案,即完整的URL爲http://google.com:22222
,那麼它因此我想知道爲什麼這個計劃的出現應該有所作爲,也就是說,以下幾點並不重要超時
socket.setdefaulttimeout(3)
conn = HTTPConnection('google.com:22222')
conn.timeout = 3
conn.request('GET', '')
然而,這並不:
socket.setdefaulttimeout(3)
conn = HTTPConnection('http://google.com:22222')
conn.timeout = 3
conn.request('GET', '')
但是,它不會發生在所有域。
感謝
請檢查http://stackoverflow.com/questions/265720/http-request-timeout。希望這有助於:) – itzMEonTV 2015-02-23 08:50:53
不,這個答案不適合我。它仍然堅持'request()'。 url示例是google.com:2222 – Kar 2015-02-23 10:41:52
您是否試圖直接提供IP地址(而不是主機名)?調用'socket.getaddrinfo()',獲取IP地址。它似乎與[ftplib.FTP超時具有不一致的行爲]相同的問題(http://stackoverflow.com/q/28429501/4279):'request()'執行多個套接字操作。每個操作都受限於超時。但是幾項合併操作可能需要更長時間 – jfs 2015-02-23 10:52:33