如何定期更新闪亮应用程序中的数据?
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)
希望对您有所帮助!
我已经用几个闪亮的应用程序部署了闪亮的服务器。每个应用程序都用作在线仪表板,应根据我的计划定期刷新(例如每 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)
希望对您有所帮助!