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 上的完整性错误

在 Django 1.5 中更改组的应用程序标签

从 1.5 迁移到 1.7 时的单元测试警告

Django 1.5 版:'url' 需要一个非空的第一个参数。 Django 1.5 中的语法改变

使用 Django 1.5 实现多种用户类型