【问题标题】:Is there a way to call a function on closing the server process in shiny?有没有办法在闪亮的关闭服务器进程时调用函数?
【发布时间】:2014-09-06 21:13:06
【问题描述】:

我有一个闪亮的应用程序,我正在其中建立一些与数据库和其他组件的连接。我希望在应用程序关闭时关闭这些连接。有没有办法在闪亮的应用程序关闭时执行功能?

【问题讨论】:

  • 看看?on.exit - 这可能会有所帮助。
  • shiny的最新版本中查看?session中记录的session$onSessionEnded

标签: r rstudio shiny shiny-server


【解决方案1】:

正如@jdharrison 在 cmets 中提到的,您可以在闪亮的服务器中使用 session$onSessionEnded。

这个极其简单的示例会在您关闭应用程序时向控制台打印一条消息,但您可以将该打印语句替换为一些关闭数据库连接的语句。

library(shiny)
ui <- fluidPage(
   #Empty UI
)

server <- function(input, output,session) {

  session$onSessionEnded(function() {
    print('hello, the session has ended')
  })
}


shinyApp(ui = ui, server = server)

【讨论】:

  • 完美解释。谢谢
  • 很好的答案对我也有帮助!
【解决方案2】:

如前所述,您可以在会话结束时使用session$onSessionEnded 执行操作。如果您为每个用户会话建立一个数据库连接,这将起作用,但通常您可能会在多个用户之间共享一个数据库连接。在这种情况下,您需要在服务器函数终止时运行代码。这可以使用 onStop() 函数 (https://shiny.rstudio.com/reference/shiny/latest/onStop.html) 来完成。文档中的示例:

library(shiny)
shinyApp(
  ui = basicPage("onStop demo"),

  server = function(input, output, session) {
    onStop(function() cat("Session stopped\n"))
  },

  onStart = function() {
    cat("Doing application setup\n")

    onStop(function() {
      cat("Doing application cleanup\n")
    })
  }
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 2021-06-14
    • 2010-10-13
    • 1970-01-01
    • 2016-05-23
    • 2020-11-02
    相关资源
    最近更新 更多