Какие клиентские библиотеки SOAP существуют для Python и где к ним документация?

Я никогда раньше не использовал SOAP, и я как бы новичок в Python. Я делаю это, чтобы познакомиться с обеими технологиями. Я установил SOAPlib и попытался прочитать их Client документацию, но я не очень хорошо ее понимаю. Могу ли я изучить что-нибудь еще, что больше подходит для использования в качестве клиентской библиотеки SOAP для Python?

Изменить: на всякий случай я использую Python 2.6.


person damon    schedule 15.10.2008    source источник
comment
Должен ли быть протокол SOAP, например, с использованием уже существующих веб-сервисов? Python xmlrpclib чрезвычайно прост в использовании, и с его помощью я перенес наши службы SOAP в XMLRPC.   -  person Kirk Strauser    schedule 16.10.2008
comment
Иногда нужно просто подключиться к сервису, который предоставляется ТОЛЬКО через SOAP, так что да - хорошая библиотека SOAP для Python - это то, что рано или поздно понадобится. У вас не будет шанса убедить поставщика услуг заменить SOAP чем-то более чистым ...   -  person rombarcz    schedule 24.09.2009
comment
Кто-нибудь может предоставить актуальное обновление в 2011 году? Видимо, никто больше не сможет задать этот вопрос.   -  person Marcin    schedule 17.10.2011
comment
К вашему сведению: я открыл аналогичное сообщение, ориентированное на SOAP для Python 3: stackoverflow.com/questions/7817303/   -  person gecco    schedule 19.10.2011
comment
Любой, кто посещает этот вопрос, проголосует за его повторное открытие, чтобы информация оставалась актуальной / можно было публиковать новые ответы.   -  person ocodo    schedule 13.09.2013
comment
Я создал предложение для сайта, чтобы такие вопросы стали официальным домом вдали от Stack Overflow. Это называется Рекомендации по коду. Помогите сделать это реальностью, присоединившись и задавая вопросы прямо сейчас!   -  person daviewales    schedule 23.03.2014
comment
Просмотрите Python Wiki для получения последней информации: wiki.python.org/moin/WebServices   -  person Mr. Napik    schedule 22.08.2016
comment
В ответах на этот вопрос stackoverflow .com / questions / 17529955 / Я нашел ссылку на zeep, которая, похоже, быть современной реализацией SOAP для Python 2 и 3.   -  person hitokiri82    schedule 10.01.2017
comment
Старый пост, старые ответы ... если вы ищете хорошо обслуживаемый и современный SOAP-клиент Python, взгляните на zeep docs .python-zeep.org   -  person return42    schedule 26.10.2017


Ответы (14)


Обновление (2016 г.):

Если вам нужен только клиент SOAP, существует хорошо поддерживаемая библиотека под названием zeep. Он поддерживает как Python 2, так и 3 :)


Обновление:

В дополнение к тому, что упомянуто выше, я буду ссылаться на страницу Python WebServices, которая всегда активна. актуальный со всеми активно поддерживаемыми и рекомендованными модулями для SOAP и всех других типов веб-сервисов.


К сожалению, на данный момент я не думаю, что существует «лучшая» библиотека SOAP для Python. У каждого из основных доступных есть свои плюсы и минусы.

Старые библиотеки:

  • SOAPy: был «лучшим», но больше не поддерживается. Не работает на Python 2.5+

  • ZSI: очень болезненно использовать, а разработка идет медленно. Имеет модуль под названием «SOAPpy», который отличается от SOAPy (см. Выше).

«Новые» библиотеки:

  • SUDS: очень питонический и простой в создании клиентов SOAP, потребляющих WSDL. Создание серверов SOAP немного сложнее. (Этот пакет не работает с Python3. Для Python3 см. SUDS-py3)

  • SUDS-py3: версия SUDS для Python3

  • spyne: создавать серверы легко, а создавать клиентов - немного сложнее. Документация несколько отсутствует.

  • ladon: создание серверов очень похоже на soaplib (с использованием декоратора). Ladon одновременно предоставляет больше интерфейсов, чем SOAP, без необходимости в дополнительном пользовательском коде.

  • pysimplesoap: очень легкий, но полезный как для клиента, так и для сервера - включает интеграцию сервера web2py, которая поставляется с web2py.

  • SOAPpy: в отличие от заброшенного SOAPpy, размещенного по ссылке ZSI выше, эта версия фактически поддерживалась до 2011 года, теперь кажется, что и он заброшен.
  • soaplib: простая в использовании библиотека Python для написания и вызова веб-сервисов soap. Веб-службы, написанные с помощью soaplib, просты, легки, хорошо работают с другими реализациями SOAP и могут быть развернуты как приложения WSGI.
  • osa: быстрая / тонкая, простая в использовании клиентская библиотека SOAP на Python.

Из вышеперечисленного я лично использовал только SUDS, и мне это очень понравилось.

person Community    schedule 16.10.2008
comment
Python 2.5.2, SOAPpy 0.12.0 и мои клиенты SOAP работают. - person bortzmeyer; 16.10.2008
comment
Похоже, вы неправильно написали SOAPpy. Или и то, и другое существует? В любом случае вы можете захотеть отредактировать, чтобы прояснить - person amarillion; 15.05.2009
comment
SOAPy и SOAPpy на самом деле разные. Я отредактировал, чтобы прояснить, и превратил пост в вики сообщества. - person Samat Jain; 22.05.2009
comment
+1 за СУДС, отличная библиотека! У меня возникли проблемы с использованием SUDS с веб-службами HTTPS за прокси. Оказывается, это известная проблема Python urllib2. См. Мой ответ для более подробной информации. - person sstock; 06.08.2009
comment
Лично я добился больших успехов с SOAPpy. Хотя иногда мне приходилось писать обертки, чтобы кое-что исправить. (Использование .NET, обслуживание WSDL) - person sfossen; 20.10.2010
comment
suds мог бы быть отличным, но у него проблемы с ssl ((( - person DataGreed; 23.11.2010
comment
Suds также не поддерживает составные ответы без нашего патча: fedorahosted.org/suds/ticket/308 - person akaihola; 29.11.2011
comment
Я пробовал использовать SUD, но при открытии WSDL он зашел в бесконечный цикл; тогда python выдал ошибку ограничения рекурсии. Я нашел этот открытый тикет по проблеме: fedorahosted.org/suds/ticket/239 Очевидно, это 3 года назад была нарушена библиотека, и до сих пор не исправлена. - person Buttons840; 28.02.2012
comment
Как можно написать сервер с помощью SUDS? Ни разу не видел рабочих примеров. - person t00ny; 10.04.2013
comment
Поддерживаемый форк SUDS находится по адресу bitbucket.org/jurko/suds. - person Sjaak Trekhaak; 28.06.2013
comment
Сегодня я начал использовать SUDS только для получения данных. Он без проблем обрабатывал базовую аутентификацию apikey в заголовках мыла, и ответы было довольно легко проанализировать. Документация тоже была неплохой. - person saccharine; 06.09.2013
comment
SOAPpy был немного возрожден и получил несколько обновлений в 2014 году. Проверить это можно здесь: pypi.python.org/ pypi / SOAPpy. - person Joe L.; 08.04.2015
comment
Я использовал suds-jurko, работает с python 3.3. Действительно отличная библиотека !! - person Ward; 30.04.2015
comment
Многие из них кажутся устаревшими, но osa кажется поддерживаемым, документированным и простым в использовании. - person razz0; 07.12.2015
comment
Большое спасибо за то, что вы вернулись в 2016 году и обновили это! ???? - person WhyNotHugo; 10.03.2017
comment
Страница SUDS, размещенная на Fedorahost, теперь недоступна. Кроме того, существует новая версия Python3, доступная как suds-py3. - person GergelyPolonkai; 01.03.2018
comment
Обновление с 2018 года - похоже, что Zeep - лучший вариант - самые современные базовые библиотеки, обширная поддержка. - person Damian; 10.06.2018
comment
Если кто-то может предоставить информацию о том, какие из них поддерживают сертификаты TLS на стороне клиента через HSM (PKCS11), мы будем очень признательны! - person Petr; 16.04.2019

Я последовал советам других ответов на этот вопрос и попробовал SUDS. После употребления «в гневе» я должен согласиться: SUDS - это очень приятно! Настоятельно рекомендуется!

У меня возникли проблемы с вызовом веб-служб на основе HTTPS из-за прокси. На момент написания этой статьи это затронуло всех клиентов веб-служб Python, которые используют urllib2, поэтому я задокументирую решение здесь.

Модуль urllib2, поставляемый с python 2.6.2 и ниже, не будет выдавать CONNECT прокси-серверу для сеансов HTTPS-over-HTTP-proxy. Это приводит к длительному таймауту или, если вам повезет, к ошибке, которая выглядит так:

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

Это была проблема1424152 в системе отслеживания ошибок Python. К отчету об ошибке прилагаются патчи, которые исправят это в Python 2.x и Python 3.x. Проблема уже устранена.

person Community    schedule 06.08.2009
comment
Просто установил его, и хотя я новичок в Python, он был очень интуитивно понятным, и я мог отправлять запросы SUDS за считанные минуты. Библиотека отличная! - person Leonid; 11.06.2011
comment
Вы не возражаете обновить эту. Спрашиваю, потому что перешел по ссылке, и ошибка исправлена. - person tshepang; 27.06.2011
comment
Позор, похоже, больше не поддерживается - person paulm; 22.10.2013
comment
Передняя пена тоже работает хорошо .. Однако она очень медленная. Получение мыльного XML-файла занимает 0,5 секунды, а его обработка занимает 5 секунд на двухъядерном компьютере! - person TjerkW; 05.09.2014
comment
@paulm: попробуйте bitbucket.org/jurko/suds - person johndodo; 25.02.2016
comment
В 2020 году я бы порекомендовал SUDS вместо zeep - person Mikhail; 14.07.2020

У меня был хороший опыт работы с SUDS https://fedorahosted.org/suds

Использовал их TestSuite в качестве документации.

person Community    schedule 15.10.2008
comment
SUDS - это круто! действительно проста в использовании, хорошая документация, отличный материал! - person Sander Versluys; 05.10.2011
comment
Поддерживаемая вилка с поддержкой python3: suds-jurko. pip install suds-jurko - person laffuste; 19.06.2015
comment
Я пытаюсь вызвать api асинхронного мыла с пеной, работает хорошо, но не получает никакого ответа, может ли кто-нибудь помочь в этом, hr my Q .: stackoverflow.com/questions/39227719/ - person Vikram Singh Chandel; 30.08.2016

SUDS - это то, что вам нужно, без сомнения.

person Community    schedule 25.07.2009
comment
И он также не работает с большим количеством файлов WSDL. В подтверждение этого утверждения - например, API карт Bing: некоторые из них не работают, и пена не может их проанализировать. - person ; 10.01.2011
comment
Я обнаружил, что SUDS поддерживает конечные точки SSL. - person leonigmig; 06.05.2011

Просто предупреждение для людей, которые смотрят на SUDS, пока этот запрос не будет разрешен, SUDS не поддерживает тег «выбор» в WSDL:

https://fedorahosted.org/suds/ticket/342

см. пена и тег выбора

person Doug    schedule 01.06.2011

SUDS прост в использовании, но повторное использование не гарантируется. Если вы сохраняете объект WSDL Client () в многопоточном приложении для повышения производительности, возникает определенный риск. Решением этого риска является метод clone (), который выдает неисправимую ошибку Python 5508, которая, кажется, печатает, но на самом деле не вызывает исключение. Может сбивать с толку, но это работает. Это по-прежнему лучший клиент SOAP для Python.

person Community    schedule 25.02.2010

Мы выпустили новую библиотеку: PySimpleSOAP, которая обеспечивает поддержку простого и функционального клиента / сервера. Его цели: простота использования и гибкость (не требуются классы, автогенерируемый код или xml), самоанализ и генерация WSDL, соответствие стандарту WS-I, совместимость (включая Java AXIS, .NET и Jboss WS). Он включен в Web2Py для обеспечения полнофункциональных решений (дополняющих другие поддерживаемые протоколы, такие как XML_RPC, JSON, AMF-RPC и т. Д.).

Если кто-то изучает SOAP или хочет его изучить, я думаю, что это хороший выбор для начала.

person reingart    schedule 07.08.2010

Я считаю, что soaplib отказался от своего SOAP-клиента («отправителя») в пользу пены. На данный момент soaplib ориентирован на то, чтобы быть независимым от веб-фреймворка сервером SOAP («получателем»). В настоящее время soaplib находится в активной разработке и обычно обсуждается в списке рассылки Python SOAP:

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

person bradallen137    schedule 31.08.2010

В моем заключении мы имеем следующее:

Клиентская часть мыла:

используйте только Suds-jurko (обновлено в 2016 г.) пена находится в хорошем состоянии и обновляется.

ОБНОВЛЕНИЕ 06/2017: библиотека suds-jurko не обновляется и очевидно заброшен,

Я тестировал библиотеку zeep, но получил ограничения по токенам, теперь просто поддерживаю UsernameToken, я сообщаю о < ошибка href = "https://github.com/mvantellingen/python-zeep/issues/27" rel = "nofollow noreferrer"> для создания токена отметки времени, и автор обновляет код, чтобы исправить это.

Zeep запускается хорошо и имеет хорошую документацию, поэтому я недавно перенес свой код от пены до зипа и отлично работает.

Сторона мыльного сервера:

У нас есть TGWS, soaplib (pysimplesoap не тестировался). ИМХО, использование и помощь soaplib должны быть выбором.

С наилучшими пожеланиями,

person Cristian Salamea    schedule 31.08.2010
comment
Есть ли хорошая документация / образцы для Suds-jurko? в репо есть несколько файлов .rst, но не так много документации о том, как использовать библиотеку. - person ierdna; 17.06.2017

Как я предлагал, здесь Я рекомендую вам катить самостоятельно. На самом деле это не так уж сложно, и я подозреваю, что по этой причине нет лучших библиотек Python SOAP.

person Greg    schedule 16.10.2008

пена довольно хороша. Я попробовал SOAPpy, но не смог заставить его работать так, как мне было нужно, тогда как пена работала почти сразу.

person Pratik Patel    schedule 24.03.2011

Может ли это помочь: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY

Я нашел это, выполнив поиск по wsdl и python, с разумной мыслью, что вам понадобится wsdl-описание SOAP-сервера для создания любых полезных клиентских оболочек ....

person Daren Thomas    schedule 15.10.2008

Мы использовали SOAPpy из веб-служб Python, но похоже, что ZSI (тот же источник) заменяет его.

person Kirk Strauser    schedule 15.10.2008

Я использую SOAPpy с Python 2.5.3 в производственных условиях.

Мне пришлось вручную отредактировать пару файлов в SOAPpy (что-то о том, что код заголовка находится в неправильном месте), но в остальном он работал и продолжает делать это очень надежно.

person carl    schedule 18.03.2010
comment
Мы сделали то же самое и используем SOAPpy с Python 2.6.3. - person Joe L.; 31.08.2010