gpt4 book ai didi

python - 在出现时将 Flask 控制台日志写入 HTML 模板

转载 作者:行者123 更新时间:2023-12-04 08:04:40 26 4
gpt4 key购买 nike

我有一个运行 2 个 shell 脚本并呈现 HTML 模板 index.html 的 Flask 应用程序。

import subprocess
from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/result', methods =["POST"])
def process_html_input():
if request.method == "POST":
git_url = request.form.get("giturl")
subprocess.call(['sh', 'installer_script1.sh'])
subprocess.call(['sh', 'installer_script2.sh'])
return render_template("index.html")

if __name__=='__main__':
app.run()

我想在 Python 控制台出现时(在脚本执行时)将其内容打印到相同的 HTML 模板 index.html -

<html lang="en">
<body>

</body>
</html>

我不会写,有人可以帮我写 python 和 HTML 代码吗?我试过this但无法使其工作。

最佳答案

检查以下运行一个命令的代码,试一试,如果有效,您也可以输入其他命令。

注意事项:

  • Yield 是一个生成器函数,它可以帮助您获取子流程的结果。
  • 在运行 shell 时使用 -u 开关以防止输出缓冲。
import subprocess
from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/result', methods =["POST"])
def process_html_input():

def inner():
git_url = request.form.get("giturl")
command = ['sh', '-u installer_script1.sh'] # -u: avoid buffering the output

proc = subprocess.Popen(
cmd,
stdout=subprocess.PIPE,
)

for line in proc.stdout:
yield highlight(line, BashLexer(), HtmlFormatter())

env = Environment(loader=FileSystemLoader('app/templates'))
tmpl = env.get_template('index.html')
return Response(tmpl.generate(result=inner()))

if __name__=='__main__':
app.run()

另外,您可以检查并使用以下链接的建议解决方案:

HTTP streaming of command output in Python Flask

关于python - 在出现时将 Flask 控制台日志写入 HTML 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66277372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com