【问题标题】:How to update data in shiny app periodically?如何定期更新闪亮应用中的数据?
【发布时间】:2019-01-07 15:07:18
【问题描述】:

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

现在每个应用程序的服务器代码如下所示

## server.R

data<-sqlQuery(...)

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

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

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

【问题讨论】:

    标签: r shiny shiny-server


    【解决方案1】:

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

    希望这会有所帮助!

    【讨论】:

    • 如何阻止后面的函数运行 :D
    • 终止 R 会话:D
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2021-02-13
    • 2019-09-24
    • 1970-01-01
    • 2019-03-18
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多