Quel est le choix actuel pour faire du RPC en Python? [fermé]

132

En fait, j'ai travaillé avec Pyro et RPyC, mais il y a plus d'implémentation RPC que ces deux. Pouvons-nous en faire une liste?

Protocoles natifs basés sur Python:

Framework RPC avec de nombreux protocoles sous-jacents:

Framework basés sur JSON-RPC:

SAVON:

Framework basés sur XML-RPC:

Autres:

edomaur
la source
3
Cela dépend vraiment du contexte. L'Internet? LAN? Site Internet? Calcul distribué? Prototype rapide? Bande passante? Taille des messages?
ddaa
@silentghost: terminé. Je préfère ne pas définir "wiki communautaire" par défaut, car parfois, je me trompe :) @ddaa: Tout. Je pose des questions sur RPC en termes généraux, s'ils ont des avantages / inconvénients dans des contextes spécifiques, veuillez les ajouter à la liste.
edomaur
J'ai eu le besoin de faire du "vrai" RPC il y a peu de temps (le type RFC 1050) et les choix n'ont pas beaucoup impressionné, alors j'ai fini par devoir le faire moi-même. Si quelqu'un a une bonne alternative à cela, j'aimerais en entendre parler.
Mattias Nilsson
Pour ceux qui veulent RPC Python vers Python - La dernière version de PyRo 4 ne prend pas en charge SSL, mais PyRo 3 le fait toujours - les deux sont entièrement Python, ils prennent donc en charge Python 2, Python 3, PyPy, Jython et IronPython. RPyc prend en charge SSL, alors que Circuits ne le mentionne pas.
RichVel

Réponses:

39

XML-RPC fait partie de la bibliothèque standard Python:

marbs
la source
+1 à XML-RPC pour plus de simplicité, même en tenant compte du fait que SimpleXMLRPCServer ne gère pas correctement les erreurs.
Denis Otkidach
1
"Avertissement Le module xmlrpc.server n'est pas protégé contre les données construites de manière malveillante.", Il a donc des cas d'utilisation assez limités.
Equidamoid
1
@Equidamoid Si vous avez besoin d'analyser des données non approuvées ou non authentifiées, consultez docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe
17

Apache Thrift est une option RPC multilingue développée sur Facebook. Fonctionne sur des sockets, les signatures de fonction sont définies dans des fichiers texte de manière indépendante de la langue.

RemcoGerlich
la source
Thrift ne prend pas en charge Python 3 n'est pas encore pris en charge, c'est dommage
Roberto
Commentaire personnel: Thrift est un cauchemar de maintenance. Je n'ai même pas vu deux distributions Linux utiliser des indicateurs de configuration comparables. Il n'y a pas si longtemps (quand j'ai construit la 0.10.0 à partir des sources), la plupart des fonctionnalités doivent être désactivées pour la faire construire sur des systèmes "exotiques" comme Ubuntu, Debian ou Fedora actuels. Les changements de type de données sous le capot font de l'utilisation du C ++ un gâchis de #ifdefs, et en 12 ans d'existence, ils n'ont pas réussi à se convaincre que leur logiciel est prêt pour une version 1.0.0. J'aime la quantité massive de langues prises en charge, mais je pense que c'est leur faiblesse: essayer d'en faire trop.
Marcus Müller
(J'utilise Thrift dans un projet GNU de taille moyenne que je maintiens. @Roberto, Thrift Support Py3, au moins maintenant.)
Marcus Müller
J'encourage vraiment les gens à vraiment réfléchir à la question de savoir si vous avez vraiment besoin d'un cadre multilingue qui essaie littéralement de connecter PHP à C ++ à Java à Python à Erlang à Common Lisp à Haskell à Swift. Ce sont des langages différents, pour une raison, et Thrift doit faire des compromis pour trouver un dénominateur commun. Je dirais que la grande majorité des gens n'a vraiment besoin de connecter qu'une ou deux langues différentes, et un cadre plus mince serait préférable.
Marcus Müller
7

Depuis que j'ai posé cette question, j'ai commencé à utiliser python-symetric-jsonrpc . C'est assez bon, peut être utilisé entre les logiciels python et non python et suivre la norme JSON-RPC. Mais il manque quelques exemples.

edomaur
la source
6

Vous pouvez essayer Ladon. Il sert plusieurs protocoles de serveur Web à la fois afin que vous puissiez offrir plus de flexibilité côté client.

http://pypi.python.org/pypi/ladon

Jakob
la source
3

Il y a quelques tentatives pour faire fonctionner SOAP avec python, mais je ne l'ai pas beaucoup testé, donc je ne peux pas dire s'il est bon ou pas.

SOAPy en est un exemple.

Mattias Nilsson
la source
2
Après avoir utilisé la plupart des frameworks SOAP et en avoir implémenté un pour faire moi-même un RPC basé sur la réflexion, mon conseil est simple: ne le faites pas. Si vous n'avez pas besoin de communication croisée + descriptions d'interface indépendantes + mappage vers des classes personnalisées, la complexité de SOAP ne sera qu'un casse-tête. Même si vous avez besoin de l'utiliser, vous aurez besoin de l'expérience pour savoir quel sous-ensemble de SOAP est sûr à utiliser.
Ants Aasma
3
SOAP est un cauchemar en général et en particulier en Python. Ne l'utilisez pas sauf si vous y êtes obligé.
Denis Otkidach
4
Mon expérience limitée avec SOAP est d'accord avec les autres commentaires ici. xmlrpc fait souvent tout ce dont j'ai besoin.
Mattias Nilsson
3

Nous développons Versile Python (VPy), une implémentation pour python 2.6+ et 3.x d'un nouveau framework ORB / RPC. Des versions de développement AGPL fonctionnelles pour examen et test sont disponibles . VPy a des capacités python natives similaires à PyRo et RPyC via une couche d'objets natifs généraux ( exemple de code ). Le produit est conçu pour une interaction d'objets distants indépendante de la plate-forme pour les implémentations de Versile Platform .

Divulgation complète: je travaille pour la société développant VPy.

Polyvalent
la source
2

peut-être ZSI qui implémente SOAP. J'ai utilisé le générateur de stub et cela a fonctionné correctement. Le seul problème que j'ai rencontré est de faire SOAP via HTTPS.

Phil
la source
1

Vous avez manqué omniORB . Il s'agit d'une implémentation CORBA assez complète, vous pouvez donc également l'utiliser pour parler à d'autres langages prenant en charge CORBA.

Dave Kirby
la source