【发布时间】:2011-09-06 14:15:22
【问题描述】:
Web 服务器使用要下载的文件(具有 Content-Disposition 标头)响应 POST 请求。使用 urllib 或 mechanize opener 什么时候会下载响应正文?
opener = mechanize.build_opener(HTTPRefererProcessor, HTTPEquivProcessor, HTTPRefreshProcessor)
r = make_post_request() # makes Request object to send
res = opener.open(r)
info = response.info()
content_disp = info.getheader('content-disposition')
filename = content_disp.split('=')[1]
content = res.read() # or skip based on filename
我的印象是正文在 read() 之前不会下载,这对于跳过某些下载(例如已经下载的文件)很有用,但我没有看到性能有很大的提升。
【问题讨论】:
-
使用像wireshark这样的流量分析器...你看到什么通过连接发送?
-
WireShark 可能会告诉您 有多少 文件正在发送,但是无论您是否调用了 read(),网络服务器都会开始传输该文件。尽管存在的任何缓冲区都可能会填满,并且如果您尚未调用 read(),传输可能会停止。