Какие клиентские библиотеки SOAP существуют для Python и где находится документация для них? [закрыто]

333

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

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

Дэймон
источник
1
Есть ли у быть SOAP, например, с использованием заранее существующих веб - сервисов? Xmlrpclib в Python чрезвычайно прост в использовании, и я перенес наши сервисы SOAP в XMLRPC вместе с ним.
Кирк Штраузер
26
Иногда нужно просто подключиться к сервису, который предоставляется ТОЛЬКО через SOAP, так что да - хорошая библиотека Python SOAP - это то, что рано или поздно понадобится. Ни у кого не будет шанса убедить поставщика услуг заменить SOAP чем-то «чище» ...
rombarcz
34
Может ли кто-нибудь предоставить обновление, актуальное в 2011 году? Очевидно, никто никогда не сможет задать этот вопрос снова.
Марцин
1
К вашему сведению: я открыл аналогичный пост, нацеленный на SOAP для Python 3 : stackoverflow.com/questions/7817303/…
gecco 19.10.11
5
Любой, кто посетит этот вопрос, проголосует за его повторное открытие, чтобы информация оставалась актуальной / можно было публиковать новые ответы.
ocodo 13.09.13

Ответы:

388

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

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


Обновить:

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


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

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

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

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

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

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

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

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

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

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

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

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

Samat Jain
источник
2
SOAPy и SOAPpy на самом деле разные. Я отредактировал, чтобы уточнить, и превратил пост в вики сообщества.
Самат Джайн
17
+1 за SUDS, отличная библиотека! Я столкнулся с проблемами при использовании SUDS с веб-службами HTTPS за прокси-сервером. Оказывается, это известная urllib2проблема Python . Смотрите мой ответ для более подробной информации.
sstock
4
Я пробовал SUD, но при открытии WSDL он зашел в бесконечный цикл; Затем Python выдал ошибку предела рекурсии. Я нашел этот открытый билет по этой проблеме: fedorahosted.org/suds/ticket/239 Видимо, это была ошибка, приводившая к поломке библиотеки 3 года назад, и до сих пор не исправленная.
Buttons840
11
На bitbucket.org/jurko/suds есть поддерживаемая ветвь SUDS
Сяак Трехаак
1
Сегодня я начал использовать SUDS только для получения данных. Он без проблем обрабатывал базовый запрос apikey в мыльных заголовках, и ответы было довольно легко проанализировать. Документация была также очень приличная.
сахарин
47

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

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

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

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

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

sstock
источник
Я только что установил его, и, хотя я совершенно новичок в Python, он был очень интуитивным, и я мог отправлять запросы SUDS в течение минут. Библиотека отличная!
Леонид
1
Вы не возражаете обновить это. Я спрашиваю, потому что я нажал на ссылку, и ошибка исправлена.
Чепанг
3
Позор, кажется, больше не поддерживается
Пол
У нас пена также хорошо работает. Однако она очень медленная. Получение файла XML-мыла занимает 0,5 секунды, а обработка занимает 5 секунд на двухъядерном компьютере!
TjerkW
1
@paulm: попробуйте bitbucket.org/jurko/suds
johndodo
19

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

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

Раджеш
источник
1
SUDS это круто! действительно прост в использовании, хорошие документы, отличные вещи!
Сандер Верслуйс
1
Поддерживается python3: форк: suds-jurko . pip install suds-jurko
laffuste
Я пытаюсь вызвать async soap api с пеной, работает хорошо, но не получает никакого ответа, может ли кто-нибудь помочь в этом, ч мой вопрос: stackoverflow.com/questions/39227719/…
Викрам Сингх Чандель
10

SUDS это путь, нет сомнений.

Питер Мортенсен
источник
5
И это также терпит неудачу на большом количестве файлов WSDL. Чтобы подтвердить это утверждение - например, API карт Bing, некоторые из них терпят неудачу, и suds не может их проанализировать.
3
Я обнаружил, что SUDS поддерживает конечные точки SSL.
leonigmig
6

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


источник
4

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

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

reingart
источник
2

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

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

bradallen137
источник
2

В моем заключении мы имеем это:

Мыло на стороне клиента:

Использовать только Suds-Jurko (обновлено 2016) suds хорошо поддерживается и обновляется.

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

Я тестировал библиотеку zeep, но получил ограничения по токенам, теперь просто поддерживаю UsernameToken, я сообщаю об ошибке при создании токена метки времени и обновляю код автора, чтобы исправить его.

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

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

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

С уважением,

Кристиан Саламеа
источник
Есть ли хорошая документация / образцы для Suds-jurko? в репозитории есть несколько файлов .rst, но не так много документации о том, как использовать библиотеку.
ierdna
1

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

Greg
источник
1

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

Пратик Патель
источник
0

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

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

Дарен Томас
источник
0

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

Кирк Штраузер
источник
0

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

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

деревенщина
источник
1
Мы сделали то же самое и используем SOAPpy с Python 2.6.3.
Джо Л.