如何在闪亮的情况下触发数据刷新?

Pat*_*thy 17 r shiny

我有一个闪亮的应用程序,它将SQL中的数据查询到数据框中,然后从我的shinyServer()块中引用这些数据框.到目前为止,我一直只在RStudio中运行它,因此每当我需要新数据时,我只是重新启动应用程序,在服务器加载之前,它将获取所有新数据.

我想将应用程序转换为闪亮的服务器,但我不确定如何诱导它定期获取新数据.为了界面,我希望它是自动的,而不是让用户点击按钮来启动加载.这有一个惯用的解决方案吗?

编辑:

我想我找到了一个适合我的解决方案.

shinyServer(function(input,output,session){
    sourceData <- reactive({
        invalidateLater(1000000,session)

        functionThatGetsData()
    })
})
Run Code Online (Sandbox Code Playgroud)

Jan*_*rup 23

reactivePoll如果您可以快速查询以检测是否有新数据,那么最聪明的可能就是使用.实际上,这对我来说非常好.

reactivePoll shiny

反应性投票



描述

用于创建活动数据源,通过定期轮询非活动数据源来工作.

用法

reactivePoll(intervalMillis, session, checkFunc, valueFunc)

参数

intervalMillis

呼叫之间等待的大约毫秒数checkFunc.他是一个数值,或一个返回数值的函数.

session

用于将此文件读取器与之关联的用户会话NULL.如果非null,则读者将在会话结束时自动停止.

checkFunc一个相对便宜的函数,其值随着时间的推移将被测试为相等; nequality表示基础值已更改,需要使其无效并重新使用valueFunc.查看详细信息.

valueFunc

计算基础值的函数.查看详细信息.

  • 以下是这个答案的工作示例:http://shiny.rstudio.com/gallery/reactive-poll-and-file-reader.html (2认同)

Mat*_*rde 10

你在找invalidateLater.以适当的间隔将其放入从数据库中检索数据的反应式表达式中.

  • 它可以存在于shinyServer外的observe()以及反应函数吗?这是我希望所有用户都可以使用的东西. (2认同)