Flask|Python脚本输出未连续显示



我正试图用Flask在网页上显示Python脚本的输出。输出是正确的,但在页面上显示任何内容之前,它会等待脚本结束。

def execute():
foldername = request.form['foldername'] 
def inner():
sys.stdout.flush()
cmd = "./deploy-config.py {}".format(foldername)
proc = subprocess.Popen(cmd, shell=True, bufsize=1, stdout=subprocess.PIPE, universal_newlines=True)
for line in iter(proc.stdout.readline,''):
yield line
env = Environment(loader=FileSystemLoader('templates'))
tmpl = env.get_template('deploy.html')
return Response(tmpl.generate(response=inner()))

模板

<h4>Please wait ...</h4>
{% block body %}
<body>
{% for line in response %}
<p0>
{{ line }}<br>
</p0>
{% endfor %}
</body>
{% endblock %}

如何使输出连续打印?

谢谢

你不能用这种方式。必须始终渲染模板。某些数据可能会发送到您的浏览器,但在完成之前不会显示。

以下是一些其他类似你的问题,让你有一个更好的起点;

如何实时显示Django 1.4网站的脚本结果?

https://www.reddit.com/r/learnpython/comments/6jx5ef/how_do_i_display_real_time_output_of_a_python/

归根结底,你要用一个带有JavaScript的网页来回复。该脚本将使用您需要在单独的"视图"上发布的新信息不断更新页面。

最新更新