django以stream的方式返回請求

views.py
html

@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函數。python

  • 使用一個產生器(generator)函數不斷的發出流數據瀏覽器

  • 因爲瀏覽器自己會對http響應作buffering,爲了能在瀏覽器中看到stream的信息一條一條的輸出,則須要增長yield " " * 1024強制填充緩衝區。若是隻是用命令行的curl之類的去讀取,則能夠不須要這句話curl

相關文章
相關標籤/搜索