7

Rook を使用してサーバーを作成しました - http://cran.r-project.org/web/packages/Rook コードは次のとおりです。

#!/usr/bin/Rscript
library(Rook)
s <- Rhttpd$new()
s$add(
  name="pingpong",
  app=Rook::URLMap$new(
    '/ping' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$write(sprintf('<h1><a href="%s">Pong</a></h1>',req$to_url("/pong")))
      res$finish()
    },
    '/pong' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$write(sprintf('<h1><a href="%s">Ping</a></h1>',req$to_url("/ping")))
      res$finish()
    },
    '/?' = function(env){
      req <- Rook::Request$new(env)
      res <- Rook::Response$new()
      res$redirect(req$to_url('/pong'))
      res$finish()
    }
  )
)
## Not run:
s$start(port=9000)

$ ./Rook.r
Loading required package: tools
Loading required package: methods
Loading required package: brew
starting httpd help server ... done

Server started on host 127.0.0.1 and port 9000 . App urls are:

    http://127.0.0.1:9000/custom/pingpong
Server started on 127.0.0.1:9000
[1] pingpong http://127.0.0.1:9000/custom/pingpong

Call browse() with an index number or name to run an application.
$ 

そして、ここでプロセスは終了します。

Rシェルでは正常に動作していますが、システムの起動時にサーバーとして実行したいと考えています。そのため、start が呼び出されると、R は終了せず、ポートで要求を待機する必要があります。終了するのではなく、単に待機またはスリープするようにRを説得するにはどうすればよいですか? R の待機またはスリープ機能を使用して、N 秒ほど待機することはできますが、それは法案に完全には適合しません。

4

2 に答える 2

0

これを試しましたか?

while (TRUE) {
    Sys.sleep(0.5);
}
于 2014-01-17T15:07:02.347 に答える