[問題] HTTPResponse.read()設定timeout

看板Python作者 (wakaka)時間11年前 (2014/10/29 14:27), 11年前編輯推噓0(003)
留言3則, 1人參與, 最新討論串1/1
我使用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
HTTP request 和 response 有 overhead, 所以會差一點點
10/29 14:49, 1F

10/29 14:49, , 2F
但實務上流量差異幾乎可以忽略(通常不到 1K)
10/29 14:49, 2F

10/29 14:50, , 3F
會 timeout 當然是有其他可能, 但實際還是要看狀況
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
文章代碼(AID): #1KK8Zg5c (Python)
文章代碼(AID): #1KK8Zg5c (Python)