R 每天在特定的时间调用myFunction,时间是多少?
我正在寻找一种方法,以便在已部署应用的服务器.R中的%H:%M处每天调用函数。 使用一个无限循环来“观察时钟”可能是一种罪恶,是行不通的。有什么想法吗 用户界面 服务器.RR 每天在特定的时间调用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
库(闪亮)
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
}
})