Qual é a escolha atual para fazer RPC em Python? [fechadas]

131

Na verdade, eu trabalhei com Pyro e RPyC, mas há mais implementação de RPC do que esses dois. Podemos fazer uma lista deles?

Protocolos nativos baseados em Python:

Estruturas RPC com muitos protocolos subjacentes:

Estruturas baseadas em JSON-RPC:

SABONETE:

Estruturas baseadas em XML-RPC:

Outras:

edomaur
fonte
3
Realmente depende do contexto. Internet? LAN? Local na rede Internet? Computação distribuída? Protótipo rápido? Largura de banda? Tamanho das mensagens?
Ddaa
@ Silentghost: pronto. Prefiro não definir "wiki da comunidade" por padrão, porque às vezes estou errado :) @ddaa: Qualquer. Estou perguntando sobre o RPC em termos gerais, se eles têm alguns prós / contras em contextos específicos, adicione-os à lista.
edomaur
Eu tive a necessidade de fazer RPC "real" há pouco tempo (o tipo RFC 1050) e as escolhas não impressionaram muito, então acabei tendo que fazer a maioria sozinho. Se alguém tem uma boa alternativa para isso, eu gostaria de ouvir sobre isso.
10898 Mattias Nilsson
Para aqueles que desejam o RPC Python para Python - a versão mais recente do PyRo 4 não suporta SSL, mas o PyRo 3 ainda o suporta - ambos são todos Python, portanto, suportam Python 2, Python 3, PyPy, Jython e IronPython. O RPyc suporta SSL, enquanto o Circuits não menciona isso.
RichVel

Respostas:

38

O XML-RPC faz parte da biblioteca padrão do Python:

marbs
fonte
+1 para XML-RPC por simplicidade, mesmo considerando que o SimpleXMLRPCServer não possui tratamento de erros adequado.
Denis Otkidach
1
"Aviso O módulo xmlrpc.server não é seguro contra dados criados com códigos maliciosos.", Por isso possui alguns casos de uso bastante limitados.
Equidamóide
1
@Equidamoid Se você precisa para analisar dados não confiáveis ou não autenticados ver docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe
16

O Apache Thrift é uma opção de RPC entre idiomas desenvolvida no Facebook. Funciona sobre soquetes, as assinaturas de funções são definidas em arquivos de texto de maneira independente do idioma.

RemcoGerlich
fonte
Thrift não suporta Python 3 ainda não é suportado, isso é uma vergonha
Roberto
Comentário pessoal: A economia é um pesadelo de manutenção. Não vi duas distribuições Linux usarem sinalizadores de configuração comparáveis. Há pouco tempo (quando construí o 0.10.0 a partir do código-fonte), a maioria dos recursos precisa ser desativada para torná-lo compatível com sistemas "exóticos", como o atual Ubuntu, Debian ou Fedora. As alterações de tipo de dados ocultas tornam o uso do C ++ uma bagunça #ifdefe, nos 12 anos de existência, eles não conseguiram se convencer de que seu software está pronto para o lançamento da versão 1.0.0. Eu gosto da enorme quantidade de idiomas suportados, mas acho que essa é a fraqueza deles: tentar fazer demais.
Marcus Müller
(Eu uso a poupança em um Projeto GNU I manter @Roberto, suporte poupança PY3, pelo menos por agora tamanho médio..)
Marcus Müller
Eu realmente incentivaria as pessoas a pensarem realmente se você realmente precisa de uma estrutura de linguagem cruzada que literalmente tente conectar PHP a C ++, Java, Python, Erlang, Common Lisp, Haskell e Swift. Esses são idiomas diferentes, por um motivo, e a Thrift precisa fazer compromissos para encontrar um denominador comum. Eu diria que a grande maioria das pessoas realmente só precisa conectar 1 ou 2 idiomas diferentes, e uma estrutura mais fina seria preferível.
Marcus Müller
6

Desde que fiz essa pergunta, comecei a usar python-symmetric-jsonrpc . É bastante bom, pode ser usado entre softwares python e não python e segue o padrão JSON-RPC. Mas faltam alguns exemplos.

edomaur
fonte
5

Você poderia tentar o Ladon. Ele serve vários protocolos de servidor da Web ao mesmo tempo, para que você possa oferecer mais flexibilidade no lado do cliente.

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

Jakob
fonte
2

Existem algumas tentativas de fazer o SOAP funcionar com python, mas eu não testei muito, então não posso dizer se é bom ou não.

SOAPy é um exemplo.

Mattias Nilsson
fonte
2
Tendo usado a maioria das estruturas SOAP e implementado uma para fazer RPC baseada em reflexão, meu conselho é simples - não faça isso. Se você não precisar de comunicação entre idiomas + descrições de interface independentes + mapeamento para classes personalizadas, a complexidade do SOAP será apenas uma dor de cabeça. Mesmo se você precisar usá-lo, precisará da experiência para saber qual subconjunto de SOAP é seguro usar.
Ants Aasma
3
SOAP é um pesadelo em geral e especialmente em Python. Não use a menos que você seja forçado.
Denis Otkidach
4
Minha experiência limitada com SOAP concorda com os outros comentários aqui. O xmlrpc geralmente faz tudo o que eu preciso.
Mattias Nilsson
2

Estamos desenvolvendo o Versile Python (VPy), uma implementação para python 2.6+ e 3.x de uma nova estrutura ORB / RPC. Versões funcionais do desenvolvedor AGPL para revisão e teste estão disponíveis . O VPy possui recursos python nativos semelhantes ao PyRo e RPyC por meio de uma camada geral de objetos nativos ( exemplo de código ). O produto foi projetado para interação de objeto remoto independente de plataforma para implementações da Versile Platform .

Divulgação completa: Trabalho para a empresa que desenvolve VPy.

Versile
fonte
1

talvez ZSI que implementa SOAP. Eu usei o gerador de stub e funcionou corretamente. O único problema que encontrei é sobre fazer SOAP através de HTTPS.

Phil
fonte
0

Você perdeu o omniORB . Esta é uma implementação bastante completa do CORBA, portanto você também pode usá-lo para conversar com outros idiomas que têm suporte ao CORBA.

Dave Kirby
fonte