如何定期重启httpuv服务器

时间:2016-01-20 04:54:24

标签: r

使用httpuv包,有没有办法在给定时间内重启服务器?

在那里,我作为一个可能的答案分享我的工作。

欢迎任何进一步的建议。

1 个答案:

答案 0 :(得分:2)

经过一些试验和错误,这里有一个工作代码,每隔5秒重启一次服务器:

library(httpuv)

host <- '127.0.0.1'

port <- 8080

app <- list(
  call = function(req) {
    list(
      status = 200L,
      headers = list('Content-Type' = 'text/plain'),
      body = 'Hello'
    )
  }
)

run <- function(host, port, app, period) {
  sv <- startServer(host, port, app)
  on.exit(stopServer(sv))
  cat("Server started\n")

  restart <- Sys.time() + period

  while (TRUE) {
    service()
    Sys.sleep(0.001)
    if (Sys.time() > restart) {
      stopServer(sv)
      sv <- startServer(host, port, app)
      restart <- Sys.time() + period
      cat("Server restarted\n")
    }
  }
}

run(host, port, app, 5)