具有长数据库查询的函数如何全局向shinyServer()提供数据?

时间:2016-08-04 16:33:36

标签: r shiny

我有一个十秒钟的数据库查询应该在远程服务器上运行,并在全局环境中加载数据,以供闪亮的应用程序使用。

查询保存在包含单个函数的R文件get_SQL_data.R中:get_data()。它与server.Rui.R位于同一目录中。它从fetch()命令返回数据对象列表:

#Contents of get_SQL_data.R

library(RMySQL)
get_data <- function() {
  ...
  ...
  return(list(data1, data2)) # Returns from RMySQL `fetch()` command
}

然后在server.R中我将文件从shinyServer()函数外部获取,因此它应该在shinyServer()运行之前运行并获取数据:

source("get_SQL_data.R")
var <- get_data(wait = TRUE)
table_1 <- var[[1]]
table_2 <- var[[2]]

shinyServer(function(input, output) {
  ...
  #Do stuff with table_1 and table_2 data
  ...
})

在我的本地计算机上,我只需运行该函数并将其存储在shinyServer()可以访问它的全局环境中。但是这种方法在远程服务器中不起作用,因为我不知道如何创建全局环境变量data1data2

有没有更好的方法在远程闪亮服务器的内存中加载全局环境变量?

此外,数据库调用大约需要10秒钟。如何仅在数据加载到全局环境中时才运行shinyServer()函数,因此我不会收到错误:"data1" is not available

0 个答案:

没有答案