Was ist die aktuelle Wahl für RPC in Python? [geschlossen]


131

Eigentlich habe ich mit Pyro und RPyC gearbeitet, aber es gibt mehr RPC-Implementierung als diese beiden. Können wir eine Liste von ihnen machen?

Native Python-basierte Protokolle:

RPC-Frameworks mit vielen zugrunde liegenden Protokollen:

JSON-RPC-basierte Frameworks:

SEIFE:

XML-RPC-basierte Frameworks:

Andere:


3
Es kommt wirklich auf den Kontext an. Internet? LAN? Webseite? Verteilte Berechnung? Schneller Prototyp? Bandbreite? Größe der Nachrichten?
ddaa

@silentghost: fertig. Ich ziehe es vor, nicht standardmäßig "Community-Wiki" zu setzen, weil ich manchmal falsch liege :) @ddaa: Beliebig. Ich frage allgemein nach RPC. Wenn sie in bestimmten Kontexten Vor- oder Nachteile haben, fügen Sie sie bitte der Liste hinzu.
Edomaur

Ich hatte vor einiger Zeit das Bedürfnis, "echte" RPC zu machen (die Art RFC 1050), und die Auswahl beeindruckte dann nicht sehr, so dass ich das meiste selbst machen musste. Wenn jemand eine gute Alternative dazu hat, würde ich gerne davon hören.
Mattias Nilsson

Für diejenigen, die Python-zu-Python-RPC möchten - die neueste Version von PyRo 4 unterstützt kein SSL, PyRo 3 jedoch weiterhin - beide sind ausschließlich Python, daher unterstützen sie Python 2, Python 3, PyPy, Jython und IronPython. RPyc unterstützt SSL, während Circuits dies nicht erwähnt.
RichVel

Antworten:


38

XML-RPC ist Teil der Python-Standardbibliothek:


Der Einfachheit halber +1 auf XML-RPC, auch wenn berücksichtigt wird, dass SimpleXMLRPCServer keine ordnungsgemäße Fehlerbehandlung aufweist.
Denis Otkidach

1
"Warnung Das xmlrpc.server-Modul ist nicht sicher gegen böswillig erstellte Daten.", Daher gibt es einige recht begrenzte Anwendungsfälle.
Equidamoid

1
@Equidamoid Wenn Sie nicht vertrauenswürdige oder nicht authentifizierte Daten analysieren müssen, siehe docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe

16

Apache Thrift ist eine sprachübergreifende RPC-Option, die bei Facebook entwickelt wurde. Funktioniert über Sockets, werden Funktionssignaturen in Textdateien sprachunabhängig definiert.


Thrift unterstützt Python 3 wird noch nicht unterstützt, das ist eine Schande
Roberto

Persönlicher Kommentar: Sparsamkeit ist ein Alptraum für die Instandhaltung. Ich habe nicht gesehen, dass zwei Linux-Distributionen vergleichbare Konfigurationsflags verwenden. Vor nicht allzu langer Zeit (als ich 0.10.0 aus dem Quellcode erstellt habe) müssen die meisten Funktionen deaktiviert werden, damit sie auf "exotischen" Systemen wie dem aktuellen Ubuntu, Debian oder Fedora aufbauen können. Änderungen des Datentyps unter der Haube machen die Verwendung von C ++ zu einem Chaos #ifdef, und in den 12 Jahren ihres Bestehens haben sie es nicht geschafft, sich davon zu überzeugen, dass ihre Software für eine Version 1.0.0 bereit ist. Ich mag die enorme Anzahl unterstützter Sprachen, aber ich denke, das ist ihre Schwäche: zu viel zu tun.
Marcus Müller

(Ich benutze Sparsamkeit in einem mittelgroßen GNU-Projekt, das ich pflege. @Roberto, Sparsamkeitsunterstützung Py3, zumindest jetzt.)
Marcus Müller

Ich würde die Leute wirklich ermutigen, wirklich darüber nachzudenken, ob Sie wirklich ein sprachübergreifendes Framework benötigen, das buchstäblich versucht, PHP mit C ++, Java, Python, Erlang, Common Lisp, Haskell und Swift zu verbinden. Dies sind aus einem bestimmten Grund verschiedene Sprachen, und Thrift muss Kompromisse eingehen, um einen gemeinsamen Nenner zu finden. Ich würde argumentieren, dass die überwiegende Mehrheit der Menschen wirklich nur 1 oder 2 verschiedene Sprachen verbinden muss und ein schlankeres Framework vorzuziehen wäre.
Marcus Müller

6

Seit ich diese Frage gestellt habe, verwende ich python-symmetric-jsonrpc . Es ist ziemlich gut, kann zwischen Python- und Nicht-Python-Software verwendet werden und folgt dem JSON-RPC-Standard. Es fehlen jedoch einige Beispiele.



2

Es gibt einige Versuche, SOAP mit Python zum Laufen zu bringen, aber ich habe es nicht viel getestet, daher kann ich nicht sagen, ob es gut ist oder nicht.

SOAPy ist ein Beispiel.


2
Nachdem ich die meisten SOAP-Frameworks verwendet und eines implementiert habe, um selbst reflexionsbasierte RPC durchzuführen, ist mein Rat einfach - tun Sie das nicht. Wenn Sie keine sprachübergreifende Kommunikation + unabhängige Schnittstellenbeschreibungen + Zuordnung zu benutzerdefinierten Klassen benötigen, wird die Komplexität von SOAP nur Kopfschmerzen bereiten. Selbst wenn Sie es verwenden müssen, benötigen Sie die Erfahrung, um zu wissen, welche Teilmenge von SOAP sicher zu verwenden ist.
Ants Aasma

3
SOAP ist im Allgemeinen und besonders in Python ein Albtraum. Verwenden Sie es nur, wenn Sie dazu gezwungen sind.
Denis Otkidach

4
Meine begrenzte Erfahrung mit SOAP stimmt mit den anderen Kommentaren hier überein. xmlrpc macht oft alles was ich brauche.
Mattias Nilsson

2

Wir entwickeln Versile Python (VPy), eine Implementierung für Python 2.6+ und 3.x eines neuen ORB / RPC-Frameworks. Funktionale AGPL-Entwicklungsversionen zur Überprüfung und zum Testen sind verfügbar . VPy verfügt über native Python-Funktionen ähnlich wie PyRo und RPyC über eine allgemeine Ebene für native Objekte ( Codebeispiel ). Das Produkt wurde für die plattformunabhängige Remote-Objektinteraktion für Implementierungen von Versile Platform entwickelt .

Vollständige Offenlegung: Ich arbeite für das Unternehmen, das VPy entwickelt.


1

vielleicht ZSI, das SOAP implementiert. Ich habe den Stichgenerator benutzt und er hat richtig funktioniert. Das einzige Problem, auf das ich gestoßen bin, ist das Ausführen von SOAP über HTTPS.


0

Sie haben omniORB verpasst . Dies ist eine ziemlich vollständige CORBA-Implementierung, sodass Sie sie auch verwenden können, um mit anderen Sprachen zu sprechen, die CORBA-Unterstützung bieten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.