我正在尝试将函数的流标准输出到网页。 some_function.main需要几分钟才能完成,我想在屏幕上显示标准输出(使用记录器)。
此代码确实执行了该功能但我在网页上没有任何内容,当我运行时,我看到屏幕上的所有内容" python app.py" (我使用Flask)
from jinja2 import Environment
from jinja2.loaders import FileSystemLoader
@app.route('/buildvm', methods=['GET', 'POST'])
def buildvm():
if 'username' not in session:
return redirect(url_for('login'))
if request.method == "POST" and 'username' in session:
parmsdic = {'key':'val'}
def inner(disc):
sys.path.append('/some/path')
import some_fuction
#for x in range(100):
for x in some_fuction.main(disc, quite=True):
yield '{0}<br/>\n'.format(x)
env = Environment(loader=FileSystemLoader('templates'))
tmpl = env.get_template('results.html')
return Response(tmpl.generate(result=inner(parmsdic)))
return render_template('index.html')
我的results.html看起来像:
{% block body %}
<body>
{% for line in result %}
{{ line }}
{% endfor %}
</body>
{% endblock %}
非常感谢任何帮助,谢谢你。
答案 0 :(得分:0)
您需要redirect stdout到管道,然后将该管道的输出放入模板中。您需要知道的一切都在相关问题的答案中。
P.S。 Pipe是一种内存结构,可用于代替文件。它也在相关问题中讨论过。