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

Flask Web应用打包为带--windowed参数的exe后,关闭浏览器标签页无法终止Python进程的问题求助

Flask Web应用打包为带--windowed参数的exe后,关闭浏览器标签页无法终止Python进程的问题求助

大家好,我最近做了一个用来将测试数据可视化成图表的Web应用,用Flask开发的。启动应用时,它会自动打开浏览器的一个标签页展示数据,我用打包工具把它做成exe的时候加了--windowed参数,这样就不会弹出控制台窗口,体验更流畅一点。

但现在碰到了个棘手的问题:每次启动应用后,任务管理器里会出现一个浏览器标签页进程,还有两个Python exe进程。当我关闭浏览器标签页时,标签页进程确实终止了,但那两个Python进程却一直留在任务管理器里没消失。要是我再重新运行一次应用,任务管理器里的Python进程就变成4个了,反复运行的话进程会越来越多,内存占用也跟着持续上涨。

我自己试了几种方法想解决,但都没效果,想请大家帮忙看看问题出在哪。

先贴一下我的主代码:

import os
from flask import Flask
import webbrowser

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

app = Flask(__name__,             
    template_folder=os.path.join(BASE_DIR, 'templates'),
    static_folder=os.path.join(BASE_DIR, 'static'))
app.config['DEBUG'] = False  # Enable debug mode for detailed error logs

if __name__ == '__main__':     
    # Automatically open the browser     
    webbrowser.open("http://127.0.0.1:5000")     
    app.run(debug=False, use_reloader=False)

我尝试的几种方法:

方法A:用taskkill命令强制结束当前进程

import subprocess
import os
import sys

def shutdown(): 
    print("Received shutdown request. Stopping application...")
    # Get the current process ID
    current_pid = os.getpid()

    # Run Windows taskkill command to forcefully kill the EXE
    subprocess.run(f'taskkill /F /PID {current_pid}', shell=True)

    sys.exit(0)  # Ensure full exit

方法B:发送SIGTERM信号终止主进程

import os
import signal
import sys

# Kill the main process     
os.kill(os.getpid(), signal.SIGTERM)     
sys.exit(0)  # Ensure full exit

方法C:调用Werkzeug的服务器关闭函数

from flask import request

func = request.environ.get("werkzeug.server.shutdown")     
if func is None:         
    raise RuntimeError("Not running with the Werkzeug Server")     
func()

这些方法我都试过了,但还是没能解决问题。我的期望是:当关闭浏览器标签页的时候,不仅标签页进程能终止,那两个Python exe进程也能完全退出,把占用的内存都释放掉,不会每次运行都残留进程。

有没有朋友遇到过类似的问题?或者能给我一些解决思路吗?

备注:内容来源于stack exchange,提问作者LM2020

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:04:32