我们创建了一个Shiny App,它已部署在Shinyapp.io上。我们正在尝试使用invalidateLater每1小时重新加载Shinyapp.io上的数据,但是当应用程序关闭/浏览器关闭时,该数据不起作用。我们听说过cronR,但无法通过Windows系统使用(将应用程序从Windows部署到Shinyapp.io)。在Shinyapp.io上部署
时未安装cronR软件包在下面的代码中,我们尝试对数据库执行ping操作,并检查最后一个ETL更新日期和最后一个数据存储的日期(如果时间大于最后一个数据的存储时间),它将调用data_refresshing()函数并重新加载应用程序。
observe({
invalidateLater(300000, session = session)
myRedshift <- src_postgres('dfdbwh',
host = 'xxxxxxxxxxxxxxxxxxxxxxx',
port = 1234,
user = "xxxxxxxx",
password = "xxxxxxxxxx")
data <- tbl(myRedshift, "MAX_ETLINCR_DATE_V")
t <- data %>% select(maxdate)
temp <- as.data.table(t)
last_ETL_updated_date_time <- temp$maxdate
last_updated_date_time <- readRDS("last_updated_date_time.rds")
if(last_updated_date_time < last_ETL_updated_date_time)
{
data_refreshing()
js$reload()
}
if(file.exists("Trigger_time.rds") == FALSE)
{
Trigger_time <- c(Trigger_time,paste0(now(tz="Asia/Kolkata")))
saveRDS(Trigger_time,file = "Trigger_time.rds")
}
else
{
Trigger_time <- readRDS("Trigger_time.rds")
Trigger_time <- c(Trigger_time,paste0(now(tz="Asia/Kolkata")))
saveRDS(Trigger_time,file = "Trigger_time.rds")
}
})