Pergunta

Eu estou procurando um motor de chamada de procedimento remoto para Python e eu descobri que Pyro (Python remoto Object) e RPyC (Remote Python chamada) são ambos o tipo de coisa que eu estou procurando.

No entanto, estou curioso para saber como eles se comparam entre si e quais são os seus prós e contras?

Foi útil?

Solução

Eu, pessoalmente encontrá-los mais ou menos equivalente, mas o autor do RPyC ( aqui ) reivindica mais simplicidade (e talvez por alguém não tão usado para computação distribuída que ele tem um ponto; I podem ser também usados ??para-lo para fazer um bom juiz ;-). Citando-o ...:

embora PYRO tem uma longa lista de projectos consideráveis ??em seu currículo, eu encontrar como configurar um servidor muito complicado, se você levar em conta a quantidade de código necessário, registrar objetos, executando servidores de nome, etc. para não mencionar o número de diferente conceitos que você tem que considerar (eventos, religação, com ou sem nome servidores de proxy, vs atributo-proxy, nomes têm de ser único, etc.). E ele é limitado (objetos remotos deve ser picklable para que você não pode trabalhar com arquivos remotos, etc.). Ao todo, PYRO tem muitos casos especiais e é geralmente muito complicado (sim, eu considerar este complicado). Então, de É claro que eu não sou um revisor independente - mas julgar por si mesmo. Não é RPyC mais simples e mais limpo?

Por outro lado da moeda, Pyro não tentar fornecer alguma segurança (que reivindicação autor do RPyC é assim mesmo muito fraco, que subjaz a muitas das complicações reivindicadas do Pyro).

A voz mais independente, David Mertz, ofertas aqui um boa explicação de RPyC (Pyro tem sido em torno de muito pontos Davi mais tempo e aos artigos anteriores que cobrem-lo). O "modo clássico" é a parte totalmente em geral e simples e-security zero, "essencialmente idêntico ao Pyro (sem estrutura de segurança opcional do Pyro)"; o "modo de serviços" é mais segura (tudo não permitida explicitamente é por padrão proibido) e, David diz: "o modo de serviço é essencialmente RPC (por exemplo, XML_RPC), módulo alguns detalhes sobre chamando convenções e implementação". Parece uma avaliação justa para mim.

BTW, eu não sou particularmente apaixonado por sistemas de RPC de um único idioma - mesmo se Python cobre 99% das minhas necessidades (e não é assim tão alta ;-), eu amo o fato de que eu posso usar qualquer linguagem para o 1% restante ... Eu não quero desistir disso na camada RPC -!) eu prefiro fazer eg JSON-RPC via este módulo, ou algo semelhante ... -!).

Outras dicas

YMMV, mas aqui estão os meus resultados de avaliação de RPyC, Pyro4 e ZeroRPC para uso em um próximo projeto. Nota que não há testes em profundidade, nem é essa a intenção de ser uma revisão em profundidade, apenas as minhas notas sobre a forma como cada um trabalha para as necessidades do meu próximo projeto.

ZeroRPC:

  • algumas dependências
  • projeto muito jovem (suporte principal de dotCloud)
  • muito pouca documentação
  • não pode acessar os atributos do objeto remoto, apenas métodos
  • Devido à falta de acesso a atributos, IPython conclusão de tabulação não funciona em objetos remoto

Pyro4:

  • Suporte Python3
  • Nice, documentação abundante
  • amadurecer projeto
  • Sem acesso atributo / guia IPython conclusão

Pyro3:

  • Suporte para acesso atributo (reivindicado em docs; não verificado)
  • Suporte Sem Python3

RPyC:

  • Acesso atributo, a conclusão de tabulação IPython em objetos remotos
  • Suporte Python3 (reivindicado em docs, ainda não verificado)
  • documentação irregular

FWIW:

I tendem a como RPyC (talvez porque foi o meu primeiro? ;-), mas de documentação é escassa. Foi minha primeira exposição a um RPC, e ele me levou muito tempo para "grok" como fazer as coisas funcionando. O autor (Tomer) é muito útil e não responder a Qs na lista Google RPyC.

Se você é novo na RPC, gostaria de sugerir começando com Pyro e tirar proveito de sua sólida documentação para aprender as cordas. Passar para RPyC, ZeroRPC, etc. conforme suas necessidades exigem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top