django - 迭代返回render_to_response

时间:2012-07-31 22:54:07

标签: django subprocess render-to-response

我想阅读一个文件,更新网站,阅读更多行,更新网站等等......逻辑如下,但它不起作用。 它只显示日志文件中的第一行并停止。有没有办法迭代'return render_to_response'?

#django视图调用将输出附加到日志文件

的远程python脚本
proc = subprocess.Popen([program, branch, service, version, nodelist])
logfile = 'text.log'
fh = open(logfile, 'r')

while proc.poll() == None:
  where = fh.tell()
  line = fh.read()
  if not line:
     time.sleep(1)
     fh.seek(where,os.SEEK_SET)
  else:
     output = cgi.escape(line)
     output = line.replace('\n\r', '<br>')
     return render_to_response('hostinfo/deployservices.html', {'response': output})

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

你可以通过使你的函数成为一个生成器来实际做到这一点 - 也就是说,使用'yield'来返回每一行。

但是,您需要直接创建响应,而不是使用render来响应。

答案 1 :(得分:0)

render_to_response将第一批渲染到网站并停止。然后,如果您想发送下一批,网站必须以某种方式再次调用此视图。您还必须记录您在日志文件中的位置,以便从该点读取第二批 我假设你在模板中有一些逻辑,所以render_to_response的第二个帖子不会覆盖第一个 如果您的数据不是很大,那么每次阅读一些新行时,您都应该探索要在网页上显示的整个内容。

答案 2 :(得分:0)

使用django_logtail

,而不是重新发明轮子