Python Shiny如何在用户关闭浏览器时停止应用?
Python实现用户关闭浏览器时停止应用的方案
在R的Shiny框架里,只需在server.R中加入以下代码,就能实现用户关闭浏览器时自动停止应用:
# in server.R session$onSessionEnded(function() { stopApp() })
回到你的问题:Python的Shiny框架里,你尝试的利用input.close的方案不生效,是因为input.close并不是Shiny for Python的内置触发事件。正确的做法是监听会话结束的原生事件,具体代码如下:
from shiny import App, ui, reactive, session import sys def server(input, output, session): @reactive.Effect @reactive.event(session.on_ended) async def _(): # 终止应用进程,实现和R中stopApp()相同的效果 sys.exit() app_ui = ui.page_fluid( ui.h1("测试关闭浏览器停止应用") ) app = App(app_ui, server)
关键说明
session.on_ended是Shiny for Python提供的原生事件,当用户关闭浏览器标签页、断开连接时会自动触发。- 使用
sys.exit()可以直接终止整个Python应用进程,完全对应R中stopApp()的作用。
内容的提问来源于stack exchange,提问作者user2551579
相关产品推荐
相关产品推荐

