我们创建了一个 Shiny 应用程序,它部署在 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")
}
})