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

关闭Holoviz Panel应用浏览器窗口时,能否自动终止panel serve进程?

实现关闭浏览器标签页时自动终止Panel Serve进程

可以通过监听Bokeh服务器的会话销毁事件来实现这个需求——当最后一个活跃的浏览器会话关闭时,自动终止服务进程。以下是两种可行方案:

方案一:自定义服务器启动脚本(无需panel serve命令)

直接在脚本中启动Bokeh服务器,注册会话销毁回调,当最后一个会话关闭时自动退出进程:

import panel as pn
import param
import sys
from bokeh.server.server import Server

class Test(param.Parameterized):
    test_number = param.Integer(default=0)

test = Test()

app = pn.template.VanillaTemplate()
app.main.append(test.param)

def on_session_destroyed(session_context):
    # 获取当前服务器实例
    server = session_context.server
    # 统计剩余活跃会话数
    active_sessions = list(server.get_sessions())
    # 当最后一个会话关闭时,停止服务器并退出进程
    if len(active_sessions) == 0:
        server.stop()
        sys.exit()

# 创建服务器并绑定应用路由
server = Server({'/': app}, num_procs=1)
# 注册会话销毁监听回调
server.on_session_destroyed(on_session_destroyed)

# 启动服务器
server.start()

if __name__ == '__main__':
    server.io_loop.start()

运行方式:直接执行脚本(python app.py),关闭浏览器标签页后,终端进程会自动退出。

方案二:适配panel serve命令的写法

如果坚持使用panel serve命令启动,可通过Panel的文档加载回调注册会话监听:

import panel as pn
import param
import sys

class Test(param.Parameterized):
    test_number = param.Integer(default=0)

test = Test()

app = pn.template.VanillaTemplate()
app.main.append(test.param)

def check_and_shutdown():
    server = pn.state.curdoc().server
    if server is not None:
        active_sessions = list(server.get_sessions())
        # 无活跃会话时终止服务
        if len(active_sessions) == 0:
            server.stop()
            sys.exit()

def on_document_ready(doc):
    # 注册会话销毁回调
    def on_session_destroyed(session_context):
        check_and_shutdown()
    doc.server.on_session_destroyed(on_session_destroyed)

# 文档加载时绑定回调
pn.state.onload(on_document_ready)

app.servable()

运行方式:使用panel serve app.py --num-procs=1命令启动(必须指定--num-procs=1,多进程模式下无法触发全局退出),关闭最后一个浏览器标签页后,服务进程会自动终止。

注意事项

  • 两种方案均基于「最后一个活跃会话关闭」触发退出,若同时打开多个标签页(多个会话),需关闭所有标签页才会终止服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:45:21