Pregunta

Estoy buscando un motor de llamada a procedimiento remoto para Python y he encontrado que PyRo (Objeto Remoto de Python) y RPyC (Remote Python Call) son el tipo de cosas que estoy buscando.

Sin embargo, tengo curiosidad por saber cómo se comparan entre sí y cuáles son sus pros y sus contras.

¿Fue útil?

Solución

Personalmente los encuentro aproximadamente equivalentes, pero el autor de RPyC ( aquí ) afirma más simplicidad (y quizás para alguien que no está tan acostumbrado a la computación distribuida tiene un punto; puede que esté demasiado acostumbrado para ser un buen juez ;-). Citándolo ...:

  

aunque PYRO tiene una larga lista de   Proyectos considerables en su currículum & # 232 ;, I   encontrar configurando un servidor tambien   complicado, si se tiene en cuenta   La cantidad de código necesaria, registrándose.   Objetos, ejecutando servidores de nombres, etc.   Sin mencionar el número de diferentes   conceptos que hay que tener en cuenta (eventos,   Rebinding, con o sin nombre   servidores, proxy vs atributo-proxy,   Los nombres tienen que ser únicos, etc.). Y   es limitado (los objetos remotos deben ser   extraíble para que no puedas trabajar con   archivos remotos, etc.). En general, PYRO   tiene demasiados casos especiales y es   generalmente demasiado complicada (si, yo   Considera esto complicado). Así de   Por supuesto que no soy un crítico independiente   - Pero juzga por ti mismo. ¿No es RPyC más simple y limpio?

En el otro lado de la moneda, PyRO intenta proporcionar algo de seguridad (de todos modos, la afirmación del autor de RPyC es demasiado débil y subyace en muchas de las complicaciones que se afirman).

Una voz más independiente, David Mertz, ofrece aquí a buena explicación de RPyC (PyRO ha existido por mucho tiempo y David apunta a artículos anteriores que lo cubren). El " modo clásico " es la parte totalmente general y simple y de seguridad cero, esencialmente idéntica a Pyro (sin el marco de seguridad opcional de Pyro); el " modo de servicios " es más seguro (todo lo que no está permitido de forma explícita está prohibido por defecto) y, dice David, " el modo de servicio es esencialmente RPC (por ejemplo, XML_RPC), módulo algunos detalles sobre convenciones de llamada e implementación " ;. Me parece una evaluación justa.

Por cierto, no soy particularmente aficionado a los sistemas RPC de un solo idioma, incluso si Python cubre el 99% de mis necesidades (y no es tan alto ;-), me encanta el hecho de que puedo usar cualquier idioma para el 1% restante ... ¡No quiero renunciar a eso en la capa RPC! -) Prefiero hacerlo, por ejemplo. JSON-RPC a través de este módulo, o similar ...! -).

Otros consejos

YMMV, pero aquí están mis resultados de la evaluación de RPyC, Pyro4 y ZeroRPC para su uso en un próximo proyecto. Tenga en cuenta que no hay pruebas en profundidad, ni pretende ser una revisión en profundidad, solo mis notas sobre qué tan bien funciona cada una para las necesidades de mi próximo proyecto.

ZeroRPC:

  • bastantes dependencias
  • proyecto muy joven (soporte principal de dotCloud)
  • muy poca documentación
  • no puede acceder a los atributos del objeto remoto, solo métodos
  • Debido a la falta de acceso a los atributos, la finalización de la pestaña IPython no funciona en objetos remotos

Pyro4:

  • Compatibilidad con Python3
  • Documentación agradable, abundante
  • proyecto maduro
  • Sin acceso a atributos / finalización de la pestaña IPython

Pyro3:

  • soporte para acceso a atributos (reclamado en documentos; no se ha verificado)
  • No es compatible con Python3

RPyC:

  • acceso de atributo, finalización de la pestaña IPython en objetos remotos
  • Compatibilidad con Python3 (reclamada en documentos; aún no verificada)
  • documentación irregular

FWIW:

Tiendo a que me gusta RPyC (tal vez porque fue mi primera? ;-), pero la documentación es escasa. Fue mi primera exposición a un RPC, y me tomó mucho tiempo para que " grok " cómo hacer que las cosas funcionen El autor (Tomer) es muy útil y responde a Qs en la lista de Google RPyC.

Si eres nuevo en RPC, sugeriría comenzar con Pyro y aprovechar su sólida documentación para aprender las cuerdas. Continúe con RPyC, ZeroRPC, etc., según sus necesidades.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top