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.

Damon
źródło
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.

Samat Jain
źródł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
11
Na bitbucket.org/jurko/suds
Sjaak Trekhaak
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 .

zasób
źródło
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
1
@paulm: try bitbucket.org/jurko/suds
johndodo
19

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

Użyli ich TestSuite jako dokumentacji.

Rajesz
źródło
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.

Peter Mortensen
źródło
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.


źródło
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ąć.

ponowne uruchomienie
źródło
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

bradallen137
źródło
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,

Cristian Salamea
źródło
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.

Greg
źródło
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.

Pratik Patel
źródło
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.

carl
źródło
1
Zrobiliśmy to samo i używamy SOAPpy z Pythonem 2.6.3.
Joe L.