gpt4 book ai didi

python - 将文件流式传输到 Pylons 中的 HTTP 响应

转载 作者:太空狗 更新时间:2023-10-29 21:25:13 25 4
gpt4 key购买 nike

我有一个 Pylons Controller 操作需要将文件返回给客户端。 (该文件位于网络根目录之外,所以我不能直接链接到它。)当然,最简单的方法是:

    with open(filepath, 'rb') as f:
response.write(f.read())

这行得通,但对于大文件来说显然效率低下。最好的方法是什么?我无法在 Pylons 中找到任何方便的方法来流式传输文件的内容。我真的必须自己从头开始编写代码来一次读取一个 block 吗?

最佳答案

正确使用的工具是 shutil.copyfileobj,它一次从一个 block 复制到另一个 block 。

示例用法:

import shutil
with open(filepath, 'r') as f:
shutil.copyfileobj(f, response)

这不会导致非常大的内存占用,并且不需要自己实现代码。

通常应注意异常 - 如果您处理信号(例如 SIGCHLD),则必须处理 EINTR,因为写入响应可能会中断,并且在执行 I/O 时可能会因各种原因发生 IOError/OSError。

关于python - 将文件流式传输到 Pylons 中的 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com