有没有办法在关闭服务器进程时调用函数闪亮?

时间:2014-07-16 11:02:35

标签: r rstudio shiny shiny-server

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

2 个答案:

答案 0 :(得分:3)

正如@jdharrison的评论中提到的,你可以在闪亮的服务器上使用$ onSessionEnded会话。

这个非常简单的示例将在您关闭应用程序时向控制台输出一条消息,但您可以用一些关闭数据库连接的语句替换该print语句。

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)

答案 1 :(得分: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")
    })
  }
)