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

如何从C#端正确合规关闭本地运行的Flask应用程序?

解决方案

方案1:修正C#进程启动逻辑(优先推荐)

你当前调用process.Kill()无法关停Flask的核心原因是:启动时绕了一层cmd.exe,C#持有的进程对象是cmd进程而非Flask的Python宿主进程,杀掉cmd并不会连带退出Python子进程

修正后的C#启动代码如下,直接启动Python解释器,后续直接Kill对应进程即可实现正常关停,无需修改Python侧代码:

var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
    FileName = "python.exe",
    Arguments = @"Assets\Scripts\server.py",
    UseShellExecute = false,
    // 可选配置:隐藏Python运行黑框
    CreateNoWindow = true
};
process.Start();

// 关停逻辑直接调用即可
// process.Kill();
// process.WaitForExit();

方案2:Flask侧合规HTTP关停接口实现

如果你的场景需要通过HTTP请求触发关停,可使用以下兼容高版本Werkzeug的实现,不会触发废弃警告:

  1. 先导入依赖模块
import os
import signal
from flask import Flask, request
  1. 实现关停接口
@app.route('/shutdown', methods=['POST'])
def shutdown_server():
    # 向当前Python进程发送SIGINT中断信号,等价于手动按Ctrl+C,Werkzeug开发服务器会正常执行关停逻辑
    os.kill(os.getpid(), signal.SIGINT)
    return "服务已触发关停"

注意:该实现仅适用于本地自用的Flask内置开发服务器场景,若后续部署到生产环境使用Gunicorn、uWSGI等WSGI容器,需要对应调整关停逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:54:05