django 流式输出接口
时间: 2025-03-26 21:28:01 浏览: 25
### 创建 Django 流式输出接口
在 Django 中,`StreamingHttpResponse` 类用于处理需要逐块发送的数据流场景。这非常适合于大文件传输或其他不适合一次性加载到内存中的数据源。
对于创建一个简单的流式输出接口,可以定义如下视图函数:
```python
from django.http import StreamingHttpResponse
def stream_response(request):
# 定义生成器函数,每次调用yield语句时会暂停并返回当前值,在下一次迭代时继续执行。
def file_iterator(file_name, chunk_size=8192):
with open(file_name, "rb") as f:
while True:
c = f.read(chunk_size)
if c:
yield c
else:
break
response = StreamingHttpResponse(
file_iterator("/path/to/large/file"),
content_type="application/octet-stream"
)
# 添加额外头部信息以便浏览器识别为附件下载
response['Content-Disposition'] = 'attachment; filename="downloaded_file"'
return response
```
此代码片段展示了如何利用 Python 的生成器特性配合 `StreamingHttpResponse` 来实现高效的文件流式传输[^4]。注意这里指定了适当的内容类型 (`content_type`) 和附加头字段 (`Content-Disposition`) 以确保客户端能够正确解析接收到的数据[^5]。
为了防止中文乱码问题的发生,如果所涉及的是文本类型的流,则应该指定合适的字符集编码作为 `content_type` 参数的一部分,例如 `"text/plain; charset=utf-8"` 或者 `"application/json; charset=utf-8"` 等形式。
阅读全文
相关推荐


















