Я получил это с функцией invalidateLater
.В приведенном ниже коде я просто попытался получить разные имена из таблицы MySQL.После первого запуска sparkApp я добавил уникальную строку в ту же таблицу, чтобы по истечении указанного времени (я проверил с 60000 мс) мы можем проверить, обновляется или нет.После указанного времени должно отображаться вновь введенное имя.(Измените его на 3600000 мс для вашего требования.)
library(shiny)
library(DBI)
library(pool)
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "database",host = "localhost",username = "username",password = "password", port = 3306, unix.sock = "/var/run/mysqld/mysqld.sock")
ui <- fluidPage(
uiOutput("names")
)
server <- function(input, output, session){
getNames <- function(x){
dbGetQuery(x, "SELECT DISTINCT names from dummyTable;")
}
refreshData <- reactive({
invalidateLater(60000, session)
getNames(pool)
})
output$names <- renderUI({
selectInput(inputId = "name", label = "First names", choices = c(as.character(refreshData()[,1])))
})
}
shinyApp(ui, server)