我有一个十秒钟的数据库查询应该在远程服务器上运行,并在全局环境中加载数据,以供闪亮的应用程序使用。
查询保存在包含单个函数的R文件get_SQL_data.R
中:get_data()
。它与server.R
和ui.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()
可以访问它的全局环境中。但是这种方法在远程服务器中不起作用,因为我不知道如何创建全局环境变量data1
和data2
。
有没有更好的方法在远程闪亮服务器的内存中加载全局环境变量?
此外,数据库调用大约需要10秒钟。如何仅在数据加载到全局环境中时才运行shinyServer()
函数,因此我不会收到错误:"data1" is not available
?