2015-01-26 3 views
0

У меня есть блестящее приложение, которое запрашивает данные из SQL. Я запускаю его на внутреннем сервере и хочу, чтобы данные обновлялись автоматически каждый час или около того.shiny trigger refresh data - invalidate not working

До сих пор это срабатывало только тогда, когда я впервые добавлял файлы 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') 
} 

Кто-нибудь имел этот вопрос?

Я видел реактивныйполл() - еще один вариант. ValueFunc будет моей исходной датой, но не был уверен, как интегрировать checkFunc в моем контексте.

ответ

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') 
}) 

сделать Также смотрите в reactivePoll и есть примеры того, как структурировать ее в reactivePoll and reactiveFileReader

+0

Я отредактировал вопрос. sourceData() действительно содержит запрос. Что касается reactivePolling, как я могу интегрировать checkFunc в моем контексте? – TinaW

+0

Спасибо, что касается 1) это то, что у меня было (после удаления return()). Для 2) я попробовал параметр watch(), но это не останавливает обновление данных в этом случае. Да, я видел примеры reactivePoll, но как именно я буду интегрировать checkFunc в моем контексте? – TinaW

+0

смотрите пример здесь https://github.com/decastillo/forc/blob/3707586332af15b11a2eeec0c58687ffd1a978ff/aq/all_sessions.r –