python – 创建并流式传输大型存档,而不将其存储在内存或磁盘上

我想允许用户一次下载多个大文件的存档.但是,文件和存档可能太大而无法存储在我的服务器的内存或磁盘上(它们可以动态地从其他服务器流入).当我将其传输给用户时,我想生成存档.我可以使用Tar或Zip或其他最简单的东西...

我想允许用户一次下载多个大文件的存档.但是,文件和存档可能太大而无法存储在我的服务器的内存或磁盘上(它们可以动态地从其他服务器流入).当我将其传输给用户时,我想生成存档.

我可以使用Tar或Zip或其他最简单的东西.我正在使用django,它允许我在我的响应中返回一个生成器或类文件对象.该对象可用于泵送过程.但是,我无法弄清楚如何围绕zipfile或tarfile库构建这种东西,我担心它们可能不支持读取文件,或者在构建时读取存档.

这个答案在converting an iterator to a file-like object可能会有所帮助. tarfile #addfile采用可迭代的,但它似乎立即将其传递给shutil.copyfileobj,因此这可能不像我希望的那样对生成器友好.

解决方法:

我最终使用了SpiderOak ZipStream.

本文标题为:python – 创建并流式传输大型存档,而不将其存储在内存或磁盘上

基础教程推荐