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

How to update data in shiny app periodically?

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

现在每个应用程序的服务器代码看起来像

## server.R

data<-sqlQuery(...)

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

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

实际上,我有点困惑,Shiny 没有提供此类功能的任何本地实现。有什么好的解决方法可以做到这一点吗?

第一步是让自己成为一个自动安排程序。我使用 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(...)

闪亮的应用脚本:

load(...)
deployApp("...", launch.browser = F, forceUpdate = T)

希望对您有所帮助!