[問題] HTTPResponse.read()設定timeout
我使用python3.2 urllib.request中的urlopen來抓網頁
有些頁面可以成功傳回header的資訊( web = urlopen(url) )
但是我要取得body的時後卻會timeout( HTTPResponse.read() )
原本我以為只會在urlopen中透過socket來取得資料
這個狀況看起來是read的時候還會再透過網路抓一次資料
會這樣想是因為我斷掉網路連結就無法正常HTTPResponse.read()
不曉得這個理解是否正確?
假如這個理解沒錯,請問這樣分兩次網路存取vs一次下載全部資料
在流量及server端負載是否有差異?(一定會下載整個頁面資料)
另外,urlopen可以完成, read()卻會timeout除了檔案過大是否還有其他可能?
目前最大的問題是無法在HTTPResponse.read()設定timeout
我也無法透過socket.setdefaulttimeout來改變timeout的時間
請問該如何解決這個問題?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.103.198
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1414564074.A.166.html
→
10/29 14:49, , 1F
10/29 14:49, 1F
→
10/29 14:49, , 2F
10/29 14:49, 2F
→
10/29 14:50, , 3F
10/29 14:50, 3F
現在遇到的狀況是wiki zh-tw的sitemap Content-Lenght = 783433942,
Content-Type = application/xml會使read()讀很久
如果想迴避這狀況,我只能判斷Content-Length來決定要不要read
這樣做感覺好像不保險,不知道什麼時候又會被read()卡住...
※ 編輯: walelile (1.171.62.209), 10/29/2014 16:02:06
Python 近期熱門文章
PTT數位生活區 即時熱門文章