Jakie biblioteki klienta SOAP istnieją dla Pythona i gdzie jest dla nich dokumentacja? [Zamknięte]


333

Nigdy wcześniej nie korzystałem z SOAP i jestem nowy w Pythonie. Robię to, aby zapoznać się z obiema technologiami. Zainstalowałem SOAPlib i próbowałem przeczytać dokumentację klienta , ale nie rozumiem tego zbyt dobrze. Czy jest coś jeszcze, co można by bardziej wykorzystać jako bibliotekę klienta SOAP dla Pythona?

Edycja: Na wszelki wypadek używam Pythona 2.6.


1
Czy musi to być SOAP, na przykład korzystanie z wcześniej istniejących usług sieciowych? Xmlrpclib w Pythonie jest bardzo prosty w użyciu i przeprowadziłem z nim migrację naszych usług SOAP do XMLRPC.
Kirk Strauser

26
Czasami po prostu chce się połączyć z usługą TYLKO zapewnianą przez SOAP, więc tak - dobra biblioteka SOAP w Pythonie jest czymś, czego wcześniej czy później będzie potrzebować. Nie będzie szans na przekonanie usługodawcy do zamiany SOAP na coś „czystszego” ...
rombarcz

34
Czy ktoś może dostarczyć aktualizację odpowiednią w 2011 roku? Najwyraźniej nikt już nie może zadać tego pytania.
Marcin

1
FYI: Otworzyłem podobny post, który dotyczy SOAP dla Pythona 3 : stackoverflow.com/questions/7817303/...
gecco

5
Każdy, kto odwiedzi to pytanie, głosuje, aby je ponownie otworzyć, aby informacje mogły pozostać aktualne / można było opublikować nowe odpowiedzi.
ocodo

Odpowiedzi:


388

Aktualizacja (2016):

Jeśli potrzebujesz tylko klienta SOAP, istnieje dobrze utrzymana biblioteka o nazwie zeep . Obsługuje zarówno Python 2, jak i 3 :)


Aktualizacja:

Oprócz tego, co wspomniano powyżej, odniosę się do strony Python WebServices, która jest zawsze aktualna ze wszystkimi aktywnie utrzymywanymi i polecanymi modułami SOAP i wszystkimi innymi typami usług sieciowych.


Niestety w tej chwili nie sądzę, że istnieje „najlepsza” biblioteka SOAP Python. Każdy z dostępnych mainstreamów ma swoje zalety i wady.

Starsze biblioteki:

  • Mydlany : Był „najlepszy”, ale już nie utrzymany. Nie działa w Python 2.5+

  • ZSI : Bardzo bolesny w użyciu, a rozwój jest powolny. Ma moduł o nazwie „SOAPpy”, który różni się od SOAPy (powyżej).

„Nowsze” biblioteki:

  • MYDLINY : bardzo Pythoniczny i łatwy w tworzeniu klient SOAP zużywający WSDL. Tworzenie serwerów SOAP jest nieco trudniejsze. (Ten pakiet nie działa z Python3. Dla Python3 zobacz SUDS-py3)

  • SUDS-py3 : SUDS w wersji Python3

  • spyne : Tworzenie serwerów jest łatwe, tworzenie klientów jest nieco trudniejsze. Dokumentacja jest nieco brakuje.

  • ladon : Tworzenie serwerów jest bardzo podobne do w soaplib (przy użyciu dekoratora). Ladon udostępnia więcej interfejsów niż SOAP w tym samym czasie bez dodatkowego kodu użytkownika.

  • pysimplesoap : bardzo lekki, ale przydatny zarówno dla klienta, jak i serwera - obejmuje integrację serwera web2py dostarczaną z web2py.

  • SOAPpy : W od porzuconego SOAPpy, który jest hostowany pod powyższym linkiem ZSI, ta wersja była faktycznie utrzymywana do 2011 roku, teraz wydaje się, że również została porzucona.
  • soaplib : łatwa w użyciu biblioteka Pythona do pisania i wywoływania serwisów mydlanych. Usługi sieciowe napisane przy pomocy soaplib są proste, lekkie, działają dobrze z innymi implementacjami SOAP i mogą być wdrażane jako aplikacje WSGI.
  • osa : Szybka / wąska, łatwa w użyciu biblioteka klienta Python SOAP.

Z powyższego korzystałem tylko z SUDS osobiście i bardzo mi się podobało.


2
SOAPy i SOAPpy są w rzeczywistości różne. Zredagowałem, aby to wyjaśnić, i zamieniłem post w wiki społeczności.
Samat Jain

17
+1 za SUDS, świetna biblioteka! Wystąpiły problemy z korzystaniem z SUDS z usługami internetowymi HTTPS za serwerem proxy. Okazuje się, że jest to znany urllib2problem Pythona . Zobacz moją odpowiedź, aby uzyskać więcej informacji.
sstock

4
Próbowałem SUD, ale podczas otwierania WSDL wpadł w nieskończoną pętlę; następnie python zgłosił błąd limitu rekurencji. Znalazłem ten otwarty bilet dotyczący problemu: fedorahosted.org/suds/ticket/239 Najwyraźniej był to błąd zepsucia biblioteki 3 lata temu i wciąż nie został naprawiony.
Przyciski 840


1
Dzisiaj zacząłem używać SUDS tylko do pobierania danych. Bezproblemowo obsługiwał podstawowe uwierzytelnianie apikey w nagłówkach mydła, a odpowiedzi były dość łatwe do przeanalizowania. Dokumentacja była również całkiem przyzwoita.
sacharyna

47

Postępowałem zgodnie z radą zawartą w innych odpowiedziach na to pytanie i wypróbowałem SUDS . Po użyciu go „w gniewie” muszę się zgodzić: SUDS jest bardzo miły! Wysoce polecany!

Miałem problemy z dzwonieniem do usług internetowych opartych na HTTPS zza serwera proxy. W chwili pisania tego tekstu ma to wpływ na wszystkich klientów usług internetowych Python urllib2, więc udokumentuję rozwiązanie tutaj.

urllib2Wysyłka moduł z Pythona 2.6.2 i poniżej nie wyda CONNECTpełnomocnikowi do sesji HTTPS-over-HTTP-proxy. Powoduje to długi limit czasu lub, jeśli masz szczęście, błąd, który wygląda następująco:

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

To był problem1424152 w narzędziu do śledzenia błędów w Pythonie. Do raportu o błędzie dołączono łatki, które naprawią to w Python 2.xi Python 3.x. Problem został już rozwiązany .


Właśnie go zainstalowałem i chociaż jestem zupełnie nowy w Pythonie, czułem się bardzo intuicyjnie i mogłem wysyłać żądania SUDS w ciągu kilku minut. Biblioteka jest świetna!
Leonid

1
Czy masz coś przeciwko aktualizacji tego? Pytam, ponieważ kliknąłem link, a błąd został naprawiony.
tshepang

3
Szkoda, że ​​wydaje się, że już nie można go utrzymać
paulm

Przed nami mydlin również działa dobrze. Jednak jest bardzo powolny. Pobieranie pliku mydła xml zajmuje 0,5 sekundy, a przetwarzanie zajmuje 5 sekund na maszynie dwurdzeniowej!
TjerkW


19

Miałem dobre doświadczenia z SUDS https://fedorahosted.org/suds

Użyli ich TestSuite jako dokumentacji.


1
SUDS jest niesamowity! bardzo łatwy w użyciu, dobre dokumenty, świetne rzeczy!
Sander Versluys,

1
Utrzymane, rozwidlenie obsługiwane przez python3: suds-jurko . pip install suds-jurko
laffuste

Próbuję wywołać asynchroniczne mydło api z mydlinami, działając dobrze, ale nie otrzymując żadnej odpowiedzi, czy ktoś może w tym pomóc, hr mój Q .: stackoverflow.com/questions/39227719/...
Vikram Singh Chandel

10

SUDS to droga, bez żadnych wątpliwości.


5
I zawiesza się również w przypadku dużej liczby plików WSDL. Aby poprzeć to roszczenie - na przykład interfejsy API map Bing, niektóre z nich zawodzą i mydła nie mogą ich przeanalizować.

3
znalazłem, że SUDS obsługuje punkty końcowe SSL.
leonigmig


6

SUDS jest łatwy w użyciu, ale nie ma gwarancji, że zostanie ponownie przyjęty. Jeśli trzymasz obiekt WSDL Client () w aplikacji z wątkami dla lepszej wydajności, wiąże się to z pewnym ryzykiem. Rozwiązanie tego ryzyka, metoda clone (), zgłasza nieodwracalny błąd Python 5508, który wydaje się drukować, ale tak naprawdę nie zgłasza wyjątku. Może być mylące, ale działa. Jest to wciąż najlepszy klient SOAP w Pythonie.


4

Wydaliśmy nową bibliotekę: PySimpleSOAP , która zapewnia obsługę prostego i funkcjonalnego klienta / serwera. Jego cele to: łatwość użycia i elastyczność (nie są wymagane żadne klasy, automatycznie generowany kod lub xml), introspekcja i generowanie WSDL, zgodność ze standardem WS-I, kompatybilność (w tym Java AXIS, .NET i Jboss WS). Jest dołączony do Web2Py, aby umożliwić rozwiązania pełnego stosu (uzupełniające inne obsługiwane protokoły, takie jak XML_RPC, JSON, AMF-RPC itp.).

Jeśli ktoś uczy się mydła lub chce go zbadać, myślę, że warto zacząć.


2

Wierzę, że soaplib wycofał swojego klienta SOAP („nadawcę”) na korzyść mydlin. W tym momencie soaplib koncentruje się na byciu agnostycznym serwerem SOAP („odbiornikiem”). Obecnie soaplib jest w fazie rozwoju i jest zwykle omawiany na liście mailingowej Python SOAP:

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


2

W moim podsumowaniu mamy to:

Po stronie klienta mydła:

używaj tylko Suds-jurko (aktualizacja 2016) piana jest dobrze utrzymana i zaktualizowana.

AKTUALIZACJA 06/2017: biblioteka suds-jurko nie została zaktualizowana i najwyraźniej została porzucona ,

Testowałem bibliotekę Zeep, ale dostałem ograniczenia dotyczące tokenów, teraz obsługuję Token_użytkownika, zgłaszam błąd w tworzeniu tokena znacznika czasu i autor aktualizuje kod, aby to naprawić.

Zeep zaczyna się dobrze i ma dobrą dokumentację , więc niedawno przeprowadziłem migrację mojego kodu z suds do zeep i działa dobrze.

Strona serwera mydła:

Mamy TGWS, soaplib (pysimplesoap nie testowane). Używanie IMHO i pomoc w wyborze soaplib.

Z poważaniem,


Czy istnieje dobra dokumentacja / próbki dla Suds-jurko? w repozytorium znajduje się kilka plików .rst, ale niewiele w dokumentacji dotyczącej korzystania z biblioteki.
ierdna

1

Jak zasugerowałem tutaj , polecam rzucić własny. Nie jest to wcale takie trudne i podejrzewam, że właśnie dlatego nie ma lepszych bibliotek SOAP w Pythonie.


1

mydliny są całkiem dobre. Próbowałem SOAPpy, ale nie działałem tak, jak potrzebowałem, podczas gdy mydła działały prawie od razu.




0

Używam SOAPpy z Pythonem 2.5.3 w ustawieniach produkcyjnych.

Musiałem ręcznie edytować kilka plików w SOAPpy (coś o tym, że kod nagłówka znajduje się w niewłaściwym miejscu), ale poza tym działało i nadal robi to bardzo niezawodnie.


1
Zrobiliśmy to samo i używamy SOAPpy z Pythonem 2.6.3.
Joe L.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.