获取<generator object =“”inner =“”at =“”0x7f2ad7874050 =“”>错误Flask

时间:2017-09-09 20:48:09

标签: python flask

当我尝试运行folliwhing flask功能(路线)时,在我的页面上出现此错误<generator object inner at 0x7f2ad7874050>

@app.route('/siteON', methods=['GET', 'POST'])
def siteon():
    def inner():
        proc = subprocess.Popen(
            ['/root/site_toggle/flaskr/testON.sh'],
            shell=True,
            stdout=subprocess.PIPE
        )
        for line in iter(proc.stdout.readline,''):
            time.sleep(1) 
            yield line.rstrip() + '<br/>\n'
    output = inner ()
    return render_template('layout.html', ON_output=output)

这是我的HTML

<input type="button" name="lien2" value="Turn OFF site"
 onclick="self.location.href='http://10.10.10.30:5000/siteOFF'" style="background-color:#1ab171"
style="color:white; font-weight:bold"onclick>
<p>{{ ON_output }}</p>

我希望运行按钮并在同一个烧瓶页面上显示输出,而不在新页面上输出输出。 在此先感谢您的帮助

1 个答案:

答案 0 :(得分:3)

这不是错误,它是生成器对象的字符串表示形式,这是yield导致函数创建的结果。

您似乎尝试使用生成器和sleep()在页面中随时间显示内容,但这不是模板的工作原理 - 它们是一次性完成的一种渲染。如果您希望在页面中随着时间的推移显示内容,则可能需要使用某种形式的客户端JavaScript来获取新的更新。