Was sind die Vor- und Nachteile des Pyro- und RPyC Python Libs?
-
05-07-2019 - |
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?
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.