Quais bibliotecas cliente SOAP existem para Python e onde está a documentação para elas? [fechadas]

333

Eu nunca usei SOAP antes e sou uma espécie de novato no Python. Estou fazendo isso para me familiarizar com as duas tecnologias. Instalei o SOAPlib e tentei ler a documentação do cliente , mas não a entendo muito bem. Existe algo mais que eu possa procurar que seja mais adequado para ser uma biblioteca de cliente SOAP para Python?

Edit: Caso isso ajude, estou usando o Python 2.6.

Damon
fonte
1
Será que ela tem que ser SOAP, como o uso de serviços web pré-existente? O xmlrpclib do Python é simples de usar e eu migrei nossos serviços SOAP para XMLRPC com ele.
Kirk Strauser 16/10/08
26
Às vezes, alguém só quer se conectar a um serviço que é fornecido SOMENTE por SOAP, então sim - a boa lib SOAP python é algo que uma pessoa mais cedo ou mais tarde precisará. Um não terá qualquer chance de convencer provedor de serviços para substituir SOAP com algo mais "limpo" ...
rombarcz
34
Alguém pode fornecer uma atualização relevante em 2011? Aparentemente, ninguém pode fazer essa pergunta novamente.
Marcin
1
FYI: Abri uma publicação semelhante que tem como alvo o SOAP para Python 3 : stackoverflow.com/questions/7817303/…
gecco 19/10/11
5
Qualquer pessoa que visite esta pergunta, vote para reabri-la para que as informações permaneçam atualizadas / novas respostas possam ser postadas.
ocodo 13/09/13

Respostas:

388

Atualização (2016):

Se você precisar apenas de um cliente SOAP, há uma biblioteca bem mantida chamada zeep . Ele suporta Python 2 e 3 :)


Atualizar:

Além do mencionado acima, consultarei a página PyServices WebServices , que está sempre atualizada com todos os módulos mantidos e recomendados ativamente para SOAP e todos os outros tipos de serviços Web.


Infelizmente, no momento, não acho que exista uma "melhor" biblioteca SOAP Python. Cada um dos principais disponíveis tem seus próprios prós e contras.

Bibliotecas mais antigas:

  • SOAPy : era o "melhor", mas não era mais mantido. Não funciona no Python 2.5 ou superior

  • ZSI : muito doloroso de usar e o desenvolvimento é lento. Possui um módulo chamado "SOAPpy", que é diferente de SOAPy (acima).

Bibliotecas "mais recentes":

  • SUDS : Muito Pythonic e fácil de criar clientes SOAP que consomem WSDL. Criar servidores SOAP é um pouco mais difícil. (Este pacote não funciona com Python3. Para Python3, consulte SUDS-py3)

  • SUDS-py3 : a versão Python3 do SUDS

  • spyne : Criar servidores é fácil, criar clientes um pouco mais desafiadores. Falta alguma documentação.

  • ladon : Criar servidores é muito parecido com o soaplib (usando um decorador). Ladon expõe mais interfaces que SOAP ao mesmo tempo, sem necessidade de código de usuário extra.

  • pysimplesoap : muito leve, mas útil para cliente e servidor - inclui uma integração de servidor web2py que acompanha o web2py.

  • SOAPpy : Diferente do SOAPpy abandonado hospedado no link ZSI acima, esta versão foi mantida até 2011, agora parece que também foi abandonada.
  • soaplib : Fácil de usar a biblioteca python para escrever e chamar serviços da web de sabão. Os serviços da Web escritos com soaplib são simples, leves, funcionam bem com outras implementações SOAP e podem ser implementados como aplicativos WSGI.
  • osa : Uma biblioteca de cliente python SOAP rápida / fina e fácil de usar.

Do exposto, eu apenas usei SUDS pessoalmente, e gostei muito.

Samat Jain
fonte
2
SOAPy e SOAPpy são realmente diferentes. Eu editei para esclarecer e transformei a postagem em um wiki da comunidade.
Samat Jain
17
+1 para SUDS, ótima biblioteca! Eu tive problemas ao usar SUDS com serviços da web HTTPS atrás de um proxy. Acontece que é um urllib2problema conhecido do Python . Veja minha resposta para mais detalhes.
Sstock
4
Eu tentei SUDs, mas ele entrou em um loop infinito ao abrir um WSDL; então python lançou um erro de limite de recursão. Eu encontrei este ticket aberto sobre o problema: fedorahosted.org/suds/ticket/239 Aparentemente, este foi um problema de quebra de biblioteca há 3 anos e ainda não foi corrigido.
Buttons840
11
Há uma bifurcação mantido de SUDS no bitbucket.org/jurko/suds
Sjaak Trekhaak
1
Comecei a usar o SUDS hoje apenas para buscar dados. Ele lidou com uma autenticação básica de apikey nos cabeçalhos de sabão sem problemas, e as respostas foram bastante fáceis de analisar. A documentação também era decente.
sacarina
47

Eu segui o conselho de outras respostas a esta pergunta e tentei SUDS . Depois de usá-lo "com raiva", devo concordar: SUDS é muito bom! Altamente recomendado!

Ocorreu um problema ao chamar os serviços Web baseados em HTTPS por trás de um proxy. No momento da redação deste artigo, isso afeta todos os clientes de serviços da Web Python que usam urllib2, portanto, documentarei a solução aqui.

O urllib2módulo fornecido com o python 2.6.2 e abaixo não emitirá um CONNECTpara o proxy para sessões de proxy HTTPS sobre HTTP. Isso resulta em um longo tempo limite ou, se você tiver sorte, um erro parecido com:

abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol

Este foi issue1424152 sobre o rastreador de bug do Python. Existem correções anexadas ao relatório de erros que corrigem isso no Python 2.xe no Python 3.x. O problema já foi corrigido .

sstock
fonte
Apenas o instalei e, embora eu seja totalmente novo no Python, senti-me muito intuitivo e poderia enviar solicitações de SUDS por alguns minutos. A biblioteca é ótima!
Leonid
1
Você se importa de atualizar este? Eu pergunto porque eu cliquei no link, e o bug foi corrigido.
tshepang
3
É uma pena que parece não ser mantida
paulm
A espuma para nós também funciona bem .. No entanto, é muito lento. A recuperação de um arquivo de sabão xml leva 0,5 segundos e o processamento leva 5 segundos em uma máquina de núcleo duplo!
TjerkW
1
@paulm: tente bitbucket.org/jurko/suds
johndodo
19

Tive uma boa experiência com SUDS https://fedorahosted.org/suds

Usaram o TestSuite como documentação.

Rajesh
fonte
1
SUDS é incrível! realmente fácil de usar, bons documentos, ótimas coisas!
Sander Versluys
1
Mantido, fork compatível com python3: suds-jurko . pip install suds-jurko
Laffuste
Estou tentando chamar API de sabão assíncrona com suds, funcionando bem, mas sem obter resposta, alguém pode ajudar nisso, hr meu Q .: stackoverflow.com/questions/39227719/…
Vikram Singh Chandel
10

SUDS é o caminho a percorrer, sem dúvida.

Peter Mortensen
fonte
5
E também falha em um grande número de arquivos WSDL. Para apoiar essa afirmação - a API de mapas do Bing, por exemplo, algumas dessas falhas e suds não podem analisá-las.
3
eu encontrei SUDS suporta endpoints SSL.
Leonigmig #
6

O SUDS é fácil de usar, mas não é garantido que seja reentrante. Se você estiver mantendo o objeto WSDL Client () em um aplicativo encadeado para obter melhor desempenho, há algum risco envolvido. A solução para esse risco, o método clone (), lança o bug irrecuperável do Python 5508, que parece imprimir, mas realmente não gera uma exceção. Pode ser confuso, mas funciona. Ainda é de longe o melhor cliente SOAP do Python.


fonte
4

Lançamos uma nova biblioteca: PySimpleSOAP , que fornece suporte para cliente / servidor simples e funcional. Seus objetivos são: facilidade de uso e flexibilidade (nenhuma classe, código gerado automaticamente ou xml é necessário), introspecção e geração de WSDL, conformidade com o padrão WS-I, compatibilidade (incluindo Java AXIS, .NET e Jboss WS). Ele está incluído no Web2Py para habilitar soluções de pilha completa (complementando outros protocolos suportados, como XML_RPC, JSON, AMF-RPC, etc.).

Se alguém está aprendendo SOAP ou deseja investigá-lo, acho que é uma boa opção para começar.

reingart
fonte
2

Acredito que o soaplib descontinuou seu cliente SOAP ('remetente') em favor da espuma. Neste ponto, o soaplib está focado em ser um servidor SOAP independente da estrutura da web ('receptor'). Atualmente, o soaplib está em desenvolvimento ativo e geralmente é discutido na lista de discussão do Python SOAP:

http://mail.python.org/mailman/listinfo/soap

bradallen137
fonte
2

Na minha conclusão, temos o seguinte:

Sabão do lado do cliente:

use apenas a espuma Suds-jurko (atualizada em 2016) é bem mantida e atualizada.

ATUALIZAÇÃO 06/2017: a biblioteca suds-jurko não é atualizada e parece abandonada ,

Eu testei a biblioteca zeep , mas tenho limitações em torno dos tokens; agora, apenas suporte o UsernameToken, relato um bug para criar o token de carimbo de data e hora e o autor atualiza o código para corrigi-lo.

O Zeep começa bem e tem boa documentação , então eu migrei recentemente meu código do suds para o zeep e funciona bem.

Lado do servidor de sabão:

Temos TGWS, soaplib (pysimplesoap não testado) e uso IMHO e ajuda o soaplib deve ser a escolha.

Cumprimentos,

Cristian Salamea
fonte
Existe boa documentação / amostras para Suds-jurko? no repositório, existem alguns arquivos .rst, mas não há muita documentação sobre como usar a biblioteca.
Ierdna
1

Como sugeri aqui , recomendo que você faça o seu próprio. Na verdade, não é tão difícil e suspeito que essa seja a razão de não haver melhores bibliotecas Python SOAP por aí.

Greg
fonte
1

espuma é muito bom. Eu tentei o SOAPpy, mas não o fiz funcionar da maneira que eu precisava, enquanto o suds funcionou praticamente imediatamente.

Pratik Patel
fonte
0

Usamos o SOAPpy do Python Web Services , mas parece que o ZSI (mesma fonte) está substituindo-o.

Kirk Strauser
fonte
0

Estou usando SOAPpy com Python 2.5.3 em uma configuração de produção.

Eu tive que editar manualmente alguns arquivos no SOAPpy (algo sobre o código do cabeçalho estar no lugar errado), mas, além disso, funcionou e continua a fazê-lo com muita confiabilidade.

carl
fonte
1
Fizemos o mesmo e estamos usando SOAPpy com Python 2.6.3.
31510 Joe L.