我已经部署了带有多个闪亮应用程序的闪亮服务器。每个应用程序都用作在线仪表板,应根据我的计划定期进行刷新(例如,每2小时或每天晚上10点)。
现在,每个应用程序的服务器代码都类似于
## server.R
data<-sqlQuery(...)
shinyServer(function(input, output,session) {
...
renderPlotly()
}
主要目标是每次服务器启动时刷新使用SQL加载的全局数据,而无需重新启动服务器本身。我对使用reactPoll或invalidateLater的反应式解决方案不感兴趣,因为这种方法每次用户在浏览器中刷新页面时都会导致多个查询。
实际上,我对Shiny没有提供这种功能的任何本机实现感到有些困惑。有什么很棒的解决方法吗?
答案 0 :(得分:4)
第一步是让自己成为一个自动调度程序。我之所以使用taskscheduleR
是因为我一生都无法找出Windows调度程序,也无法找出later
软件包来解决其他棘手的问题。
然后,您需要计划SQL下载,并将该SQL保存为R映像。
最后,只需使用deployApp("...", launch.browser = F, forceUpdate = T)
library(later)
shiny.auto <- function(interval = 2*60*60){ # 2 hours 60 minutes 60 seconds
source("script source1")
source("shinyappscript")
later::later(shiny.auto, interval)
}
脚本源1:
data<-sqlQuery(...)
save.image(...)
shinyappscript:
load(...)
deployApp("...", launch.browser = F, forceUpdate = T)
希望这会有所帮助!