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

标签 python http

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

我可以使用 Tar 或 Zip 或任何最简单的工具。我正在使用 django,它允许我在响应中返回生成器或类似文件的对象。这个对象可以用来插入这个过程。但是,我无法弄清楚如何围绕 zipfile 或 tarfile 库构建这类东西,而且我担心它们可能不支持在运行时读取文件,或者在构建存档时读取它。

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

最佳答案

我最终使用了 SpiderOak ZipStream .

关于python - 创建和流式传输大型存档而不将其存储在内存或磁盘上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10405210/

相关文章:

http - go 似乎不尊重持久连接设置

c# - 如果更改 Thread.CurrentThread.CurrentCulture,则 HttpWebRequest 超时

javascript - NodeJS 和 HTTP 客户端 - 是否支持 cookie?

python - 在 Pydev/Eclipse 的 python 程序中使用外部 C 库

python - 从 Google Analytics 导出特定分割的受众概览数据

java - 如何从 Java 中的 HTTP header 中检索 IP 地址

web-services - Angular JS POST 请求不发送 JSON 数据

python - 模块未找到错误: No module named 'azure.cognitiveservices.vision.customvision'

python - 如何在 Python 中将整个字符串写入文件以及文件的位置?

python - 值错误: Unknown activation function:swish_activation