Question

Je recherche un moteur d'appel de procédure distant pour Python et j'ai découvert que PyRo (objet distant Python) et RPyC (Appel Python distant) sont les deux types de recherche que je recherche.

Cependant, je suis curieux de savoir comment ils se comparent et quels sont leurs avantages et leurs inconvénients?

Était-ce utile?

La solution

Personnellement, je les trouve à peu près équivalentes, mais l'auteur de RPyC ( ici ) réclame plus de simplicité (et peut-être même pour Quelqu'un qui n'a pas l'habitude de l'informatique distribuée, il a raison, je suis peut-être trop habitué pour en faire un bon juge ;-). En le citant ...:

  

bien que PYRO ait une longue liste de   projets considérables dans son résumé, je   trouver aussi la mise en place d'un serveur   compliqué, si vous prenez en compte   la quantité de code nécessaire, en vous inscrivant   objets, serveurs de noms en cours d'exécution, etc.   Sans parler du nombre de différents   concepts à prendre en compte (événements,   reliure, avec ou sans nom   serveurs, proxy vs attribut-proxy,   les noms doivent être uniques, etc.). Et   c'est limité (les objets distants doivent être   picklable afin que vous ne puissiez pas travailler avec   fichiers distants, etc.). En somme, PYRO   a trop de cas spéciaux et est   généralement trop compliqué (oui, je   considérez cela comme compliqué). Donc de   Bien sûr, je ne suis pas un critique indépendant   - mais jugez par vous-même. RPyC n’est-il pas plus simple et plus propre?

De l’autre côté de la médaille, PyRO essaie d’offrir une sécurité (l’auteur, selon l’auteur du RPyC, est trop faible et sous-tend de nombreuses complications alléguées par PyRO).

David Mertz, une voix plus indépendante, propose ici une bonne explication de RPyC (PyRO existe depuis bien plus longtemps et David cite des articles précédents le couvrant) Le " mode classique " est la partie totalement générale et simple et à sécurité zéro, "essentiellement identique à Pyro (sans le cadre de sécurité optionnel de Pyro)"; le " mode services " est plus sécurisé (tout ce qui n'est pas explicitement autorisé est par défaut interdit) et, selon David, " le mode de service est essentiellement RPC (par exemple, XML_RPC), modulo quelques détails sur les conventions d’appel et la mise en oeuvre ". Cela me semble une évaluation juste.

BTW, je n'aime pas particulièrement les systèmes RPC en une seule langue - même si Python couvre 99% de mes besoins (et ce n'est pas si élevé ;-), j'aime le fait de pouvoir utiliser n'importe quelle langue pour les 1% restants ... Je ne veux pas abandonner cela au niveau RPC! -) Je préfère le faire, par exemple JSON-RPC via ce module ou similaire ...! -).

Autres conseils

YMMV, mais voici mes résultats de l'évaluation de RPyC, Pyro4 et ZeroRPC pour une utilisation dans un projet à venir. Notez qu’il n’existe pas de tests approfondis, il ne s’agit pas non plus d’un examen approfondi, mais uniquement de notes sur la manière dont chacun répond aux besoins de mon projet à venir.

ZeroRPC:

  • pas mal de dépendances
  • très jeune projet (support principal de dotCloud)
  • très peu de documentation
  • ne peut pas accéder aux attributs de l'objet distant, juste aux méthodes
  • En raison du manque d'accès aux attributs, la complétion des onglets IPython ne fonctionne pas sur les objets distants

Pyro4:

  • Prise en charge de Python3
  • Belle documentation abondante
  • projet mature
  • Aucun attribut d'accès / attribut d'onglet IPython

Pyro3:

  • prise en charge de l'accès aux attributs (réclamé dans les documents; n'a pas été vérifié)
  • Pas de support Python3

RPyC:

  • accès aux attributs, complétion des onglets IPython sur les objets distants
  • Prise en charge de Python3 (revendiquée dans la documentation; pas encore vérifiée)
  • documentation irrégulière

FWIW:

J'ai tendance à aimer RPyC (peut-être parce que c'était ma première? ;-), mais sa documentation est rare. C'était ma première exposition à un RPC, et il m'a fallu beaucoup de temps pour "grok" comment faire fonctionner les choses. L'auteur (Tomer) est très utile et répond aux questions de la liste Google RPyC.

Si vous êtes nouveau dans RPC, je vous suggérerais de commencer par Pyro et de tirer parti de sa solide documentation pour apprendre les bases du processus. Passez à RPyC, ZeroRPC, etc. selon vos besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top