关闭闪亮的应用程序/浏览器时,如何定期在后台运行r脚本(即,每1小时运行一次)?

时间:2019-04-15 15:00:17

标签: r shiny shinydashboard shinyapps

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

0 个答案:

没有答案