我有一个从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。
答案 0 :(得分:2)
如果您不想使用sourceData()返回任何内容,因为这是它寻找我的方式,您可以执行以下操作之一:
# 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' )
})
# 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' )
})
中提供了如何构建它的示例