python请求流不使用django streaminghttpresponse

时间:2016-05-04 01:32:05

标签: python django http python-requests

我有一个简单的django应用程序(充当服务器),我试图将响应流式传输到客户端(请求是客户端)。这是django应用程序的views.py。

from django.shortcuts import render
from django.http import HttpResponse, StreamingHttpResponse
from django.views.decorators.http import condition

import time

@condition(etag_func=None)
def stream_response(request):
    resp = StreamingHttpResponse( stream_response_generator() )
    return resp

def stream_response_generator():
    # yield "<html><body>\n"
    for x in range(1,5):
        yield "<div>%s</div>\n" % x
        print "test %s" % x
        #yield " " * 1024  # Encourage browser to render incrementally
        time.sleep(1)
    # yield "</body></html>\n"

我正在使用django中的StreamingHttpResponse函数来延迟发送给任何请求它的人的一些数据。以下是我的client.py。

import requests
r = requests.get('http://127.0.0.1:8000/stream', stream=True)
for line in r.iter_lines():
    # filter out keep-alive new lines
    if line:
        print line

每当客户端请求url时,它都不会以增量显示输出。它在下载所有内容后立即显示整个消息。当我取消注释yield "" * 1024时,它只显示第一个<div>1</div>。我是否需要在views.py的标题中更改某些内容,以便请求知道如何流式传输数据?当我使用curl访问url时,它会成功传输响应。

0 个答案:

没有答案