0

我有一个小的 API,如果到达一天中的某个时间,例如午夜,我需要停止运行,然后继续执行程序的其余部分。这与来自请求的调用无关。因为可以包含一个通过检查 Sy.time() 来中断进程的函数,但只有在请求通过时才会执行。我的猜测是我必须修改 $run 的某些属性,但在互联网上找不到太多关于它的信息。我知道可以使用系统命令获取 pid 并杀死它,但我不知道该解决方案是否可以确保程序的其余部分运行。

有人有想法吗?

提前致谢。

包含该函数的文件如下所示: (my_file.R)

#* @param x My argument
#* @get /lag_lead 
function(x){
 x <- as.numeric(x)  
 c(x-1, x+1) 
}

和运行脚本:

library(plumber)
mon_api <- plumb('my_file.R')
mon_api$run(port = 8000)
print('hello')
4

1 回答 1

1

这样做的一种方法是设置一个超时,withTimeout它是一个包装器setTimeLimit

library(R-utils)
withTimeout(mon_api$run(port = 8000), timeout = 30)
# timeout is in seconds

# calculate timeout, using difftime between now and midnight
tmo <- as.numeric(difftime(as.POSIXct("2018-12-28 00:00:00"), Sys.time(), units = "secs"))
withTimeout(mon_api$run(port = 8000), timeout = tmo)

其他一些超时解决方案,一个使用parallel Time out an R 命令通过类似 try()

于 2018-12-27T14:30:25.260 回答