大多数Web服务器(例如FCGI /
SCGI)执行自己的缓冲,HTTP客户端执行自己的缓冲,依此类推。以这种方式实际清除数据并使客户端实际上无法接收数据是非常困难的,因为这不是典型的 *** 作。
与您尝试执行的 *** 作最接近的是将迭代器传递给HttpResponse,并在生成器中进行工作。像这样的东西:
def index(request): def do_work(): step_1() yield "step 1 complete" step_2() yield "step 2 complete" step_3() yield "step 3 complete" return HttpResponse(do_work())
…但是 不一定会
刷新。(未经测试的代码,但是您可以理解;请参阅http://docs.djangoproject.com/en/dev/ref/request-
response/#passing-iterators。)
大多数基础设施根本不希望得到零星的响应。即使Django没有缓冲,您的前端服务器也可能是,客户端也可能是。这就是为什么大多数事情为此使用拉动更新的原因:一个单独的接口来查询长时间运行的请求的状态。
(我也希望能够对这种事情进行可靠的推送更新…)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)