使用flask python在Web浏览器中获取'top' linux命令的实时输出

问题描述

目前,我正在构建一个能够执行 shell 命令并将结果提取到 Web 浏览器的应用程序。 我的问题是结果在浏览器上显示正常,但不是实时显示。我遇到问题的命令是 Linux 'top' 命令。正如我们所知,此命令会实时发送在系统以及 cpu、RAM 上执行的进程列表。可以用 Flask 做到这一点吗??? 我以前看过类似的帖子,但他们没有帮助我。坦率地说,我对烧瓶还是个新手,你的帮助对我非常有用。提前致谢

解决方法

以下是我试过的代码。 (命令在test.sh文件中)

import flask
from shelljob import proc

app = flask.Flask(__name__)

@app.route( '/stream' )
def stream():
    g = proc.Group()
    p = g.run( [ "./test.sh" ] )

    def read_process():
        while g.is_pending():
            
            lines = g.readlines()
            for proc,line in lines:
                yield line
                

    retour = flask.Response( read_process(),mimetype= 'text/json' )
        return retour

@app.route('/exec')
def streaming():
         return flask.render_template('index.html')



if __name__ == "__main__":
    app.run(debug=True)