作者walelile (wakaka)
看板Python
标题[问题] HTTPResponse.read()设定timeout
时间Wed Oct 29 14:27:51 2014
我使用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://webptt.com/cn.aspx?n=bbs/Python/M.1414564074.A.166.html
1F:→ uranusjr: HTTP request 和 response 有 overhead, 所以会差一点点 10/29 14:49
2F:→ uranusjr: 但实务上流量差异几乎可以忽略(通常不到 1K) 10/29 14:49
3F:→ uranusjr: 会 timeout 当然是有其他可能, 但实际还是要看状况 10/29 14:50
现在遇到的状况是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