2017-06-21 5 views
0

Ich bin Neuling zu R Klempner, der ein REST-Server ist, der R-Funktion als Rest-API verfügbar machen kann.Grundlegende Fragen über R Klempner

würde ich folgende Fragen stellen:

  1. Ist R Klempner Server stark genug, um in der Produktionsumgebung übernommen werden?
  2. Die Funktion, die als Rest api ausgesetzt ist, Wenn die Funktion komplexe und zeitraubende Logik, wie Sie die Zeit festlegen, um die Verbindung am Leben zu halten?
  3. Wie viele gleichzeitige Anfragen unterstützt Klempner?

Antwort

3

(Bias: Ich bin der Autor des Klempners)

  1. Sind R Klempner Server stark genug, um in der Produktionsumgebung übernommen werden?

Klempner ist noch jung, aber ich kenne mehrere Leute jetzt Klempner in der Produktion. Hier ist eine Zuschreibung auf ein solches Beispiel: https://www.mango-solutions.com/blog/production-r-at-ons

  1. Die Funktion, die als Rest api ausgesetzt ist, wenn die Funktion komplexer macht und Zeitlogik aufwendig, wie man die Zeit festgelegten Dinge, um die Verbindung am Leben zu halten?

Es gibt nicht noch eine Möglichkeit, einen Timeout auf einem bestimmten Endpunkt zu erzwingen. Es wäre einfach Sache des API-Autors, dafür zu sorgen, dass die Funktionen so leicht gehalten werden, dass sie in angemessener Zeit zurückkehren können. Andernfalls sollten Sie einen separaten Prozess starten, um eine lang andauernde Aufgabe zu bearbeiten, damit Sie schnell auf die eingehende Anfrage antworten können.

  1. Wie viele gleichzeitige Anfragen unterstützt der Klempner?

R in Single-Thread, so zu einem bestimmten Zeitpunkt kann es nur eine Sache (ohne spezielle Abhilfe) tun. Dies gilt auch für Klempner. Ihre Plumber-API, die in einem einzelnen R-Prozess ausgeführt wird, kann nur zu einem bestimmten Zeitpunkt eine Funktion/einen Endpunkt ausführen. Andere eingehende Anforderungen werden in die Warteschlange gestellt, bis der R-Prozess bereit ist, mit der Verarbeitung zu beginnen.

Die Lösung besteht darin, mehrere R-Prozesse parallel auszuführen und eingehenden Datenverkehr auf diese Prozesse zu verteilen. Etwas mehr Diskussion: https://plumber.trestletech.com/docs/hosting/ und eine Lösung: https://plumber.trestletech.com/docs/docker-advanced/

+0

Dank @Jeff Allen für die große Antwort. Jetzt habe ich ein klareres Verständnis, wie Klempner funktioniert. Für # 3 sieht es so aus, dass die Lösung Lastausgleich mit Nginx + Multiple Installateur-Instanzen verwendet. Sagen wir, 10 Instanzen, Es sieht aus, dass 10 Anfragen gleichzeitig bearbeitet werden und weitere Anfragen in die Warteschlange gestellt werden – Tom