Frage

Ich bin auf der Suche nach einer Remote Procedure Call-Engine für Python und ich habe festgestellt, dass PyRo (Python Remote Object) und RPyC (Remote Python Call) sowohl die Art der Sache ist ich suche.

Aber ich bin neugierig, wie sie miteinander zu vergleichen, und was sind ihre Vor-und Nachteile?

War es hilfreich?

Lösung

Ich persönlich finde sie etwa gleich, aber RPyC des Autors ( hier ) behauptet, mehr Einfachheit (und vielleicht auch für jemand nicht alles, was zu verteiltes Rechnen verwendet er einen Punkt bekam ist, ich kann auch dazu verwendet werden, um einen guten Richter zu machen ;-). Zitiert von ihm ...:

  

obwohl PYRO hat eine lange Liste von   erhebliche Projekte in seinem Lebenslauf, ich   finden Sie einen Server einrichten zu   kompliziert, wenn man berücksichtigt,   die Menge an Code benötigt, Registrierung   Objekte, Name-Server ausgeführt wird, usw.   Ganz zu schweigen von der Anzahl der unterschiedlichen   Konzepte müssen Sie (Ereignisse betrachten,   Rebinding, mit oder ohne Namen   Server, Proxy vs. Attribut-Proxy,   Namen müssen eindeutig sein, etc.). Und   es ist begrenzt (Remote-Objekte müssen   picklable so kann man nicht arbeiten mit   Remote-Dateien, etc.). Alles in allem PYRO   hat zu viele Sonderfälle und   im Allgemeinen zu kompliziert (ja, ich   betrachten diese kompliziert). Also von   Natürlich bin ich nicht ein unabhängiger Gutachter   - aber für sich selbst beurteilen. Ist das nicht RPyC einfacher und sauber?

Auf der anderen Seite der Medaille, Pyro nicht versuchen, eine gewisse Sicherheit zu bieten (die RPyC des Autors Anspruch ohnehin zu schwach ist, und Ursache vieler Pyro beansprucht Komplikationen).

Eine unabhängige Stimme, David Mertz, bietet hier ein gute Erklärung von RPyC (Pyro gibt es schon viel länger und David weist auf früheren Artikel über sie). Die „klassische Mode“ ist der ganz allgemein und einfach und Null-Sicherheitsteil „im Wesentlichen identisch mit Pyro (ohne Pyro optionaler Sicherheits-Framework)“; der „Dienste-Modus“ ist sicherer (alles nicht explizit verboten ist standardmäßig zulässig) und David sagt: „der Service-Modus ist im Wesentlichen RPC (zB XML_RPC), Modulo einige Details über Konventionen und Umsetzung calling“. Scheint eine faire Bewertung zu mir.

BTW, bin ich nicht besonders gern einsprachigen RPC-Systeme - auch wenn Python 99% meiner Bedürfnisse abdeckt (und es ist nicht ganz so hoch ;-), ich liebe die Tatsache, dass ich jede Sprache verwenden kann, für das restliche 1% ... ich will nicht, dass bei der RPC-Ebene geben! -) ich würde lieber tun zB JSON-RPC über dieses Modul oder dergleichen ... -).

Andere Tipps

YMMV, aber hier sind meine Ergebnisse aus der Auswertung RPyC, Pyro4 und ZeroRPC für den Einsatz auf einem bevorstehenden Projekt. Beachten Sie, dass es nicht in eingehenden Untersuchungen, noch ist dies beabsichtigt, eine eingehende Beurteilung zu sein, nur meine Notizen auf, wie gut jedes Werk für die Bedürfnisse meines nächsten Projektes.

ZeroRPC:

  • ganz wenig Abhängigkeiten
  • sehr junges Projekt (Haupt Unterstützung von dotCloud)
  • sehr wenig Dokumentation
  • kann nicht Remote-Attribut des Objekts zugreifen, nur Methoden
  • Durch das Fehlen von Attribut-Zugang, Abschluss IPython Registerkarte funktioniert nicht auf Remote-Objekte

Pyro4:

  • Python3 Unterstützung
  • Nizza, reichlich Dokumentation
  • reifes Projekt
  • keine Attribute access / IPython Tabulatorvervollständigung

Pyro3:

  • Unterstützung für Attribut-Zugang (in docs behauptet, hat nicht überprüft)
  • Keine Python3 Unterstützung

RPyC:

  • Attribut Zugriff, IPython Tabulatorvervollständigung auf entfernte Objekte
  • Python3 Unterstützung (nach docs, noch nicht überprüft)
  • fleckige Dokumentation

FWIW:

Ich neige dazu, RPyC zu mögen (vielleicht, weil es meine erste war? ;-), aber es ist Dokumentation ist spärlich. Es war meine erste Begegnung mit einem RPC, und es dauerte eine lange Zeit, um „grok“, wie die Dinge zum Laufen zu bringen. Der Autor (Tomer) ist sehr hilfreich und nicht zu Qs auf der Google RPyC Liste reagieren.

Wenn Sie RPC neu sind, würde ich vorschlagen, mit Pyro Start und nutzen die solide Dokumentation, die Seile zu lernen. Fahren Sie mit RPyC, ZeroRPC usw., wie Ihre Bedürfnisse benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top