Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 每天在特定的时间调用myFunction,时间是多少?_R_Timer_Shiny - Fatal编程技术网

R 每天在特定的时间调用myFunction,时间是多少?

R 每天在特定的时间调用myFunction,时间是多少?,r,timer,shiny,R,Timer,Shiny,我正在寻找一种方法,以便在已部署应用的服务器.R中的%H:%M处每天调用函数。 使用一个无限循环来“观察时钟”可能是一种罪恶,是行不通的。有什么想法吗 用户界面 服务器.R 库(闪亮) myFunction方法不起作用 } } shinyServer(功能(输入、输出){ 输出$foo可以这样做。 但你必须举行一次公开会议 server.R timeStop <- "22:45:20" trick <- reactiveValues() trick$catch <- FALSE

我正在寻找一种方法,以便在已部署应用的服务器.R中的%H:%M处每天调用函数。 使用一个无限循环来“观察时钟”可能是一种罪恶,是行不通的。有什么想法吗

用户界面 服务器.R
库(闪亮)
myFunction方法不起作用
}
}
shinyServer(功能(输入、输出){

输出$foo可以这样做。 但你必须举行一次公开会议

server.R

timeStop <- "22:45:20"
trick <- reactiveValues()
trick$catch <- FALSE

  observe({
    invalidateLater(200, session)
    if (strftime(Sys.time(),  format="%H:%M:%S") > timeStop) {
      trick$toFire <- "after"
    } else if (strftime(Sys.time(),  format="%H:%M:%S") < timeStop){
      trick$toFire <- "before"
    } else if(strftime(Sys.time(),  format="%H:%M:%S") == timeStop & trick$catch == FALSE){
      trick$toFire <- "exact"  
}
  })

  observe({
    invalidateLater(200, session)
    if (trick$toFire == "exact") {
           trick$toFire <- "after"
            trick$catch <- TRUE
            Sys.sleep(1)
          #your code or functions
            trick$catch <- FALSE
        } 
  }) 


timeStop你是说喜欢吗?我强烈建议不要使用shiny来执行此操作。shiny会话不应该全天候打开。你想做的事情应该使用cronjob来完成(cronjob可以调用R脚本)@daattali感谢您的提示。我已在本地电脑上通过windows任务计划程序计划了一个脚本。工作正常,但该过程并不完全自动,因为它要求我的电脑运行并联机。我应该如何设置这些重复任务以自动运行?如果问题是你的电脑不总是运行,那么你可以购买服务器从amazon EC2或digitalocean(5美元/月)上下载,该服务器将始终位于anks@daattali goin 2上。然后给我一台服务器
library(shiny)
myFunction <- function() {...}
repeat {  # same behavior with while (T)
  # Sys.sleep(60)  # also tried sleeping
  if (format(as.POSIXlt(Sys.time(), tz = "GMT"), "%H:%M") == "21:00") {
    myFunction()  # func not called + rendering blocked -> approach not working
  }
}
shinyServer(function(input, output) {
  output$foo <- renderText("not rendering with infinite loop")
})
timeStop <- "22:45:20"
trick <- reactiveValues()
trick$catch <- FALSE

  observe({
    invalidateLater(200, session)
    if (strftime(Sys.time(),  format="%H:%M:%S") > timeStop) {
      trick$toFire <- "after"
    } else if (strftime(Sys.time(),  format="%H:%M:%S") < timeStop){
      trick$toFire <- "before"
    } else if(strftime(Sys.time(),  format="%H:%M:%S") == timeStop & trick$catch == FALSE){
      trick$toFire <- "exact"  
}
  })

  observe({
    invalidateLater(200, session)
    if (trick$toFire == "exact") {
           trick$toFire <- "after"
            trick$catch <- TRUE
            Sys.sleep(1)
          #your code or functions
            trick$catch <- FALSE
        } 
  })