You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask调用os.system启动程序后页面需等程序关闭才加载如何解决

问题根因

  • os.system() 本身是同步阻塞调用,执行后会一直等待启动的子进程(示例中的记事本)运行结束、退出后才会返回执行结果,你的视图函数卡在这一步没执行完,自然没法给前端返回响应,就会出现页面一直加载的情况。

解决方法

改用 subprocess.Popen 启动程序,这个方法是异步非阻塞的,启动子进程后会直接往下执行,不会等待子进程退出。

修改后的代码如下:

import subprocess
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    # 替换os.system为subprocess.Popen即可实现非阻塞启动
    subprocess.Popen("notepad", shell=True)
    return "<p>Hello, World!<br>Launching Notepad!</p>"

if __name__ == '__main__':
    # 要实现手机访问,需将host设为0.0.0.0,保证同一局域网下设备可访问
    app.run(host="0.0.0.0", debug=True)

额外注意事项

  • 如果启动的是带空格路径的程序,比如C:\Program Files\Tencent\QQ\Bin\QQ.exe,可以直接传列表参数:subprocess.Popen([r"C:\Program Files\Tencent\QQ\Bin\QQ.exe"])
  • 手机访问前需要关闭PC的防火墙,或者开放Flask默认运行的5000端口,同时保证手机和PC在同一局域网下
  • 生产环境部署时不要开启debug模式,测试阶段可正常使用

内容的提问来源于stack exchange,提问作者Zariaa_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:45:03