0

我想读取文件,更新网站,阅读更多行,更新网站等......逻辑如下,但它不起作用。它只显示日志文件的第一行并停止。有没有办法迭代'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})

谢谢您的帮助。

4

3 回答 3

1

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

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

于 2012-08-01T07:13:27.320 回答
0

render_to_response将第一批渲染到网站并停止。然后,如果您想发送下一批,网站必须以某种方式再次调用此视图。您还必须记录您在日志文件中的位置,以便可以从该点读取第二批。
我假设您在模板中有一些逻辑,因此 render_to_response 的第二个帖子不会覆盖第
一个.

于 2012-07-31T23:07:47.010 回答
0

与其重新发明轮子,不如使用django_logtail

于 2012-08-01T01:15:08.343 回答