我的问题在本质上与this very helpful answer类似,但我想同时进出。
我有一个django应用程序,用于存储对外部http文件服务器上的文件的引用。现在,当用户请求zip集合时,它会执行以下操作(伪):
generate session_id
for url in url_list:
download file to sessionid/filename.ext
for file in session_id folder:
zip.write
close
http response
显然这不太理想,因为:1。需要清理,2。慢和3.导致用户看到任何下载进度之前的长时间延迟。
我无法重新编码的位是io buffer /" file like object"。 Zipfile在写入时查找文件,但我想提供一个流。简而言之,我如何将requests
传递给zipfile
到HttpResponse
?
答案 0 :(得分:0)
您可以将writestr命令与流文件下载一起使用,我建议使用requests library。
Zipfile.writestr Documentation
ZipFile.writestr(zinfo_or_arcname, bytes[, compress_type])
编辑:示例
zipinfo = ...
zip = ...
for url in list:
r = requests.get(url, stream=True)
for line in r.iter_lines():
# filter out keep-alive new lines
if line:
print(zip.writestr(zipinfo, line))