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

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

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

Ответ 1

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

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


Update:

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


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

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

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

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

"Новые" библиотеки:

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

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

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

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

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

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

Ответ 2

Я последовал советам других ответов на этот вопрос и дал 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

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

Ответ 3

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

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

Ответ 4

SUDS - это путь, не говоря уже о нем.

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Сторона клиента:

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

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

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

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

Сторона сотового сервера:

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

С уважением,

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

Ответ 14

Im, используя SOAPpy с Python 2.5.3 в производственной настройке.

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