Python:将stdout从函数传递到网页

时间:2015-04-29 13:31:29

标签: python flask jinja2

我正在尝试将函数的流标准输出到网页。 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 %}

非常感谢任何帮助,谢谢你。

1 个答案:

答案 0 :(得分:0)

您需要redirect stdout到管道,然后将该管道的输出放入模板中。您需要知道的一切都在相关问题的答案中。

P.S。 Pipe是一种内存结构,可用于代替文件。它也在相关问题中讨论过。