我想阅读一个文件,更新网站,阅读更多行,更新网站等等......逻辑如下,但它不起作用。 它只显示日志文件中的第一行并停止。有没有办法迭代'return render_to_response'?
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})
感谢您的帮助。
答案 0 :(得分:1)
你可以通过使你的函数成为一个生成器来实际做到这一点 - 也就是说,使用'yield'来返回每一行。
但是,您需要直接创建响应,而不是使用render来响应。
答案 1 :(得分:0)
render_to_response
将第一批渲染到网站并停止。然后,如果您想发送下一批,网站必须以某种方式再次调用此视图。您还必须记录您在日志文件中的位置,以便从该点读取第二批
我假设你在模板中有一些逻辑,所以render_to_response的第二个帖子不会覆盖第一个
如果您的数据不是很大,那么每次阅读一些新行时,您都应该探索要在网页上显示的整个内容。
答案 2 :(得分:0)