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

使用PyWebIO开发桌面应用时如何从Web界面触发服务端安全退出

PyWebIO 桌面应用服务端退出解决方案

方案1:添加手动退出按钮(最通用)

直接在页面中添加退出按钮,点击后终止整个Python进程,实现代码如下:

from pywebio import start_server
from pywebio.output import put_button
import os
import signal

# 方式A:直接终止进程
def exit_app():
    # 直接终止整个Python进程,无残留
    os._exit(0)

# 方式B:优雅终止(模拟Ctrl+C,服务会处理完现有请求再退出)
def graceful_exit():
    os.kill(os.getpid(), signal.SIGINT)

def app():
    # 你的业务逻辑
    put_button("退出应用", onclick=exit_app) # 按需替换回调函数即可

if __name__ == "__main__":
    start_server(app, port=12345, debug=False)

注意:不要使用sys.exit()实现退出,该方法只会终止当前处理请求的子线程,不会停止整个PyWebIO服务进程。

方案2:关闭浏览器自动退出(桌面场景最优)

如果你是专门开发桌面应用,建议直接使用PyWebIO内置的桌面启动器,开启auto_close参数后,用户关闭浏览器窗口时服务端会自动退出,无需额外添加按钮:

from pywebio.platform.desktop import start_desktop_app

def app():
    # 你的业务逻辑
    pass

if __name__ == "__main__":
    start_desktop_app(
        app, 
        port=12345,
        auto_close=True, # 窗口关闭自动退出服务
        debug=False
    )

注意事项

  • 打包发布时必须关闭debug模式,debug模式下自动退出逻辑可能失效
  • 如果需要在退出前执行清理操作,可以在退出回调中先运行你的清理逻辑,再调用终止进程的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:00