2016-03-28 12 views
0

Ich versuche, Nginx direkt vor Rserve (HTTP) einzurichten. Die Rserve 1.7.0-Versionshinweise (http://www.rforge.net/Rserve/news.html) legen nahe, dass Sie die .http.request-Workerfunktion definieren müssen. Jedes Beispiel, das ich gefunden habe, schlägt vor, diese Zeilen zu Rserv.conf hinzuzufügen, aber ich möchte FastRWeb nicht verwenden.Rserve .http.request Funktion ohne FastRWeb

library(FastRWeb) 
.http.request <- FastRWeb:::.http.request 

Mein Rserve.conf wie sie ist:

remote enable http.port 6312

Können Sie mir mit einer Implementierung von .http.request helfen, die nicht auf FastRWeb abhängt? Vielen Dank!

Antwort

0

Ich bin mir nicht sicher, ob ich verstehe, wie dies mit nginx zusammenhängt, da dies nur als Reverse-Proxy fungieren würde und somit keine Änderungen an der Rserve-Konfiguration erfordert.

Aber .http.request sein muss einfach eine Funktion definiert als

.http.request <- function(url, query, body, headers, ...) 

Sie tun können, was Sie wollen, und dann kehrt die folgenden (von rserve zitiert):

 the result is expected to have one of the following forms:    

     a) character vector of length 1 => error (possibly from try),   
     will create 500 response            

     b) list(payload[, content-type[, headers[, status code]]])    

     payload: can be a character vector of length one or a     
     raw vector. if the character vector is named "file" then    
     the content of a file of that name is the payload      

     content-type: must be a character vector of length one     
     or NULL (if present, else default is "text/html")      

     headers: must be a character vector - the elements will     
     have CRLF appended and neither Content-type nor       
     Content-length may be used            

     status code: must be an integer if present (default is 200)    

Nur Nutzlast ist obligatorisch, alles andere ist optional. Es ist eine gute Idee, Ihren Code in etwas wie tryCatch({ ... }, error=function(e) e$message) zu verpacken, so dass Sie die Ausgabe im Falle eines Fehlers sehen.

Beachten Sie, dass dies ist das gleiche API wie durch den integrierten HTTP-Server in R.

PS verwendet: mit der stats-rosuda-devel Mailingliste für rserve-Fragen Bitte beachten Sie.