views.py
@condition(etag_func=None)
def start_brecc_import(request):
resp = HttpResponse( stream_generator(), mimetype='text/html')
return resp
def stream_generator():
yield "<html><body>\n"
for k in range(10):
yield k
yield " " * 1024 # force browser to output
time.sleep(1)
yield "<p>complete!!</p><a href=\"/\">return</a></body></html>\n"
使用condition修饰符修饰对应的view函数。
使用一个产生器(generator)函数不断的发出流数据
由于浏览器本身会对http响应做buffering,为了能在浏览器中看到stream的信息一条一条的输出,则需要增加yield " " * 1024强制填充缓冲区。如果只是用命令行的curl之类的去读取,则可以不需要这句话