Führen Sie R / Rook beim Start als Webserver aus
Ich habe einen Server mit Rook in R - erstellt.http://cran.r-project.org/web/packages/Rook Code ist wie folgt
#!/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.
$
Und hier endet der Prozess.
Es läuft gut in der R-Shell, aber dann möchte ich es als Server beim Systemstart ausführen. Sobald der Start aufgerufen wurde, sollte R nicht beendet werden, sondern auf Anforderungen am Port warten. Wie kann ich R überzeugen, einfach zu warten oder zu schlafen, anstatt zu gehen? Ich kann die Warte- oder Schlaffunktion in R verwenden, um einige N Sekunden zu warten, aber das passt nicht perfekt zur Rechnung