2015-04-29 30 views
1

我試圖將功能的標準輸出流到網頁。 some_function.main需要幾分鐘才能完成,我想在屏幕上顯示標準輸出(使用記錄器)。Python:從功能流標準輸出到網頁

此代碼執行的功能,但我沒有在網頁上得到任何東西,我在屏幕上看到的一切,當我運行「蟒蛇app.py」(我用瓶)

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

你可以把瓶子零件代碼?這很簡單,還不夠。 – skyline75489

+0

添加了Flask函數 – Grene

+0

對於「live」stdout,我認爲你需要websocket。 – skyline75489

回答

0

您需要將redirect stdout添加到管道,然後將該管道的輸出放入模板中。你需要知道的一切都在相關問題的答案中。

P.S. Pipe是一種內存結構,可以用來代替文件。這也在相關問題中討論。

+0

但是,如果我將輸出重定向到一個文件或StringIO,我將無法「流」生活的輸出,它會一旦函數返回正確? – Grene