如何定期更新闪亮的应用程序中的数据?

时间:2018-07-31 09:11:42

标签: r shiny shiny-server

我已经部署了带有多个闪亮应用程序的闪亮服务器。每个应用程序都用作在线仪表板,应根据我的计划定期进行刷新(例如,每2小时或每天晚上10点)。

现在,每个应用程序的服务器代码都类似于

## server.R

data<-sqlQuery(...)

shinyServer(function(input, output,session) {
...
renderPlotly()
}

主要目标是每次服务器启动时刷新使用SQL加载的全局数据,而无需重新启动服务器本身。我对使用reactPoll或invalidateLater的反应式解决方案不感兴趣,因为这种方法每次用户在浏览器中刷新页面时都会导致多个查询。

实际上,我对Shiny没有提供这种功能的任何本机实现感到有些困惑。有什么很棒的解决方法吗?

1 个答案:

答案 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)

希望这会有所帮助!

相关问题