闪亮的触发刷新数据 - 无效无效

时间:2015-01-26 09:41:56

标签: r shiny reactive-programming invalidation

我有一个从SQL查询数据的闪亮App。我在内部服务器上运行它并希望数据每小时左右自动刷新一次。

到目前为止,这只有在我将shinApp文件新放入服务器并首次运行时才有效。之后,每当我重新加载链接时,数据都不会改变。

我尝试使用invalidate,如下所示,但它不刷新数据。

 shinyServer(function(input, output, session) {

  sourceData <- reactive({
  invalidateLater(3000000,session)
  return(sourceData())
})
.
.
.
})

其中定义了sourceData()

 sourceData<-function(){
 data1 <<- get_data1( 'query here' )
 data2 <<- get_data2( 'query here' )
 }

有人有这个问题吗?

我看到reactivepoll()是另一种选择。 valueFunc将是我的sourceData,但不确定如何在我的上下文中集成checkFunc。

1 个答案:

答案 0 :(得分:2)

如果您不想使用sourceData()返回任何内容,因为这是它寻找我的方式,您可以执行以下操作之一:

1

 # sourceData() shouldn't return anything but it will still write into data1 and data2
    sourceData <- reactive({
      invalidateLater(3000000,session)
      data1 <<- get_data1( 'query here' )
      data2 <<- get_data2( 'query here' )
    })

2

# This is the preferred option as it seems to me you don't want to use sourceData() but rather the data1 and data2
sourceData <- observe({
  invalidateLater(3000000,session)
  data1 <<- get_data1( 'query here' )
  data2 <<- get_data2( 'query here' )
})

另请参阅reactivePoll,并在reactivePoll and reactiveFileReader

中提供了如何构建它的示例