140 votes

Quel est le choix actuel pour faire du RPC en Python ?

En fait, j'ai travaillé un peu avec Pyro et RPyC, mais il y a plus d'implémentation RPC que ces deux-là. Peut-on en faire une liste ?

Protocoles natifs basés sur Python :

Les cadres RPC avec de nombreux protocoles sous-jacents :

Cadres basés sur JSON-RPC :

SOAP :

Cadres basés sur XML-RPC :

Autres :

4 votes

Cela dépend vraiment du contexte. Internet ? UN RÉSEAU LOCAL ? Site web ? Calculs distribués ? Prototype rapide ? Bande passante ? Taille des messages ?

0 votes

@silentghost : fait. Je préfère ne pas définir "wiki communautaire" par défaut, car parfois, je me trompe :) @ddaa : Tout. Je demande des informations sur les RPC en général, s'ils ont des avantages et des inconvénients dans des contextes spécifiques, veuillez les ajouter à la liste.

0 votes

Il y a quelque temps, j'ai eu besoin de faire du "vrai" RPC (du type RFC 1050) et les choix proposés à l'époque ne m'ont pas beaucoup impressionné, si bien que j'ai fini par devoir en faire la majeure partie moi-même. Si quelqu'un a une bonne alternative à cela, j'aimerais l'entendre.

39voto

Pär Wieslander Points 11258

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

0 votes

+1 à XML-RPC pour la simplicité, même en tenant compte du fait que SimpleXMLRPCServer ne dispose pas d'une gestion des erreurs appropriée.

1 votes

"Warning The xmlrpc.server module is not secure against maliciously constructed data.", donc il a des cas d'utilisation assez limités.

1 votes

@Equidamoid Si vous avez besoin d'analyser des données non fiables ou non authentifiées, consultez le site suivant docs.python.org/2/library/xml.html#xml-vulnerabilities

17voto

RemcoGerlich Points 5676

Apache Thrift est une option RPC inter-langues développée par Facebook. Il fonctionne sur des sockets, les signatures de fonctions sont définies dans des fichiers texte de manière indépendante du langage.

0 votes

Thrift ne supporte pas Python 3 n'est pas encore supporté, c'est dommage

1 votes

Commentaire personnel : Thrift est un cauchemar de maintenance. Je n'ai pas vu deux distributions Linux utiliser des drapeaux de configuration comparables. Il n'y a pas si longtemps (quand j'ai construit 0.10.0 à partir des sources), la plupart des fonctionnalités devaient être désactivées pour le faire fonctionner sur des systèmes "exotiques" comme les Ubuntu, Debian ou Fedora actuels. Les changements de type de données sous le capot font de l'utilisation de C++ un fouillis de #ifdef et en 12 ans d'existence, ils n'ont pas réussi à se convaincre que leur logiciel était prêt pour une version 1.0.0. J'aime la quantité massive de langues supportées, mais je pense que c'est leur faiblesse : essayer d'en faire trop.

0 votes

(J'utilise thrift dans un projet GNU de taille moyenne que je maintiens. @Roberto, thrift supporte Py3, au moins maintenant).

7voto

edomaur Points 806

Depuis que j'ai posé cette question, je me suis mis à utiliser python-symmetric-jsonrpc . Il est assez bon, peut être utilisé entre des logiciels python et non python et suit le standard JSON-RPC. Mais il manque quelques exemples.

6voto

Jakob Points 1

Vous pourriez essayer Ladon. Il permet d'utiliser plusieurs protocoles de serveur web à la fois, ce qui vous permet d'offrir une plus grande flexibilité du côté client.

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

3voto

Mattias Nilsson Points 2269

Il existe quelques tentatives pour faire fonctionner SOAP avec python, mais je ne les ai pas beaucoup testées et je ne peux pas dire si elles sont bonnes ou non.

SOAPy est un exemple.

2 votes

Ayant utilisé la plupart des frameworks SOAP et en ayant moi-même implémenté un pour faire du RPC basé sur la réflexion, mon conseil est simple - ne le faites pas. Si vous n'avez pas besoin de communication inter-langues + de descriptions d'interfaces indépendantes + de 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 nécessaire pour savoir quel sous-ensemble de SOAP est sûr à utiliser.

3 votes

SOAP est un cauchemar en général et surtout en Python. Ne l'utilisez pas, sauf si vous y êtes contraint.

4 votes

Mon expérience limitée de SOAP est en accord avec les autres commentaires ici. xmlrpc fait souvent tout ce dont j'ai besoin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X