django - 流式 HTTP 响应,刷新到浏览器

标签 django

我有如下观点:

from django.views.decorators.http import condition

def stream():
    for i in range(0, 40):
        yield " " * 1024
        yield "%d" % i
        time.sleep(1)

@condition(etag_func=None):
def view(request):
    return HttpResponse(stream(), mimetype='text/html')

但是,它似乎根本没有流式传输。大约 40 秒后,所有数据都会在最后一次转储。我怎样才能让它正确冲洗?

最佳答案

为了使 http 流工作,您的中间件、WSGI 容器和 Web 服务器(以及反向代理/负载平衡器,如果您使用 nginx+apache2 syle 部署)都必须支持它。禁用中间件并删除一些层,直到它工作为止(任何进行缓存或设置 etags 的东西都没有),然后将它们添加回来。我不知道你有什么堆栈,但是 IIRC apache2 + mod_python 可以用于流媒体,尽管它不是为 Django 提供服务的推荐方式。

关于django - 流式 HTTP 响应,刷新到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2932895/

相关文章:

python - django中的数据库后端外键错误

python - 为什么我不能实现 Django 的忘记密码功能?

django - 在 Django-CMS 或 Mezzanine 之上构建网站

Django @csrf_exempt 在类 View 中不起作用

python - Django - 如何链接表格

Django 2.1 密码重置 View 404

python - 是否可以减少样板函数上的参数数量?

python - Django - 使用从类似 REST 的 API 检索的数据构建报告的应用程序

python - Django 模板 : get many-to-many value in formset

javascript - 如何使用 Javascript 将链接附加到 <a> 元素