Django 1.5 - 使用新的 StreamingHttpResponse
Posted
技术标签:
【中文标题】Django 1.5 - 使用新的 StreamingHttpResponse【英文标题】:Django 1.5 - using the new StreamingHttpResponse 【发布时间】:2013-02-27 21:07:05 【问题描述】:如果我实现 StreamingHttpResponse
as shown here,则在 10 秒结束之前不会显示“流式传输”响应。关于djangoproject 的信息不多,只是说它对于生成大型 CSV 文件很有用,同时警告说应该在请求-响应周期之外执行昂贵的任务。
但是,我看不出它使用耗时的代码完全可以工作。生成器对象有什么东西可以防止这种情况发生吗?这是复制的代码以供参考。
import time
from django.http import StreamingHttpResponse
def stream_response(request):
resp = StreamingHttpResponse(stream_response_generator())
return resp
def stream_response_generator():
for x in range(1,11):
yield ' <br />\n'.format(x)
time.sleep(1)
【问题讨论】:
您的 100 个字节,无论是否流式传输,都绝对会在网络的最低级别进行缓冲。尝试一百万行作为开始。 @Pavel 谢谢你 - 我在产量字符串中添加了 ' '*1024 ,它可以按需要工作 【参考方案1】:[OP 的解决方案转换为下面的答案]
Pavel 的评论指出,我的示例的问题在于浏览器的缓冲,这可以通过修改发送的数据量来解决,例如
yield ' <br /> '.format(x, ' '*1024)
【讨论】:
以上是关于Django 1.5 - 使用新的 StreamingHttpResponse的主要内容,如果未能解决你的问题,请参考以下文章
将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?
将现有站点更新为新的 Django 1.5 用户模型后 django_admin_log 上的完整性错误