1

我们创建了一个 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")
   }
   })
4

0 回答 0