Які бібліотеки клієнтів SOAP існують для Python і де знаходиться документація для них? [зачинено]


333

Я ніколи раніше не використовував SOAP, і я начебто новий для Python. Я роблю це, щоб познайомитися з обома технологіями. Я встановив SOAPlib і спробував прочитати їх документацію на клієнта , але я не дуже добре це розумію. Чи ще я можу розглянути, що більше підходить для того, щоб бути бібліотекою клієнтів SOAP для Python?

Редагувати: На всякий випадок, коли це допомагає, я використовую Python 2.6.


1
Чи повинен це бути SOAP, наприклад, використовуючи вже існуючі веб-сервіси? Xmlrpclib Python мертвий простий у використанні, і я перемістив наші служби SOAP до XMLRPC з ним.
Кірк Штраузер

26
Іноді просто хочеться підключитися до сервісу, який надається ТІЛЬКИ через SOAP, так що так - хороша пітона SOAP - це те, що рано чи пізно потрібно. У вас не буде жодного шансу переконати постачальника послуг замінити SOAP чимось «чистішим» ...
rombarcz

34
Чи може хтось надати актуальне оновлення у 2011 році? Мабуть, ніхто більше ніколи не може задати це запитання.
Марцін

1
FYI: Я відкрив аналогічний пост , що цілі SOAP для Python 3 : stackoverflow.com/questions/7817303 / ...
GECCO

5
Усі, хто відвідує це питання, проголосують за його повторне відкриття, щоб інформація могла залишатися актуальною / можуть бути розміщені нові відповіді.
ocodo

Відповіді:


388

Оновлення (2016):

Якщо вам потрібен лише клієнт SOAP, існує доглянута бібліотека під назвою zeep . Він підтримує і Python 2, і 3 :)


Оновлення:

Додатково до того, що було сказано вище, я посилаюсь на сторінку веб- сервісів Python, яка завжди є актуальною для всіх активно підтримуваних та рекомендованих модулів для SOAP та всіх інших типів веб-сервісів.


На жаль, на даний момент я не думаю, що існує "найкраща" бібліотека Python SOAP. Кожен із доступних мейнстрімів має свої плюси і мінуси.

Старіші бібліотеки:

  • SOAPy : Був "найкращим", але більше не підтримувався. Не працює на Python 2.5+

  • ZSI : Дуже болісно використовувати, а розвиток повільний. Має модуль під назвою "SOAPpy", який відрізняється від SOAPy (вище).

Більш новітні бібліотеки:

  • SUDS : Дуже пітонічний та простий у створенні WSDL-клієнтів SOAP. Створити SOAP-сервери трохи складніше. (Цей пакет не працює з Python3. Для Python3 див. SUDS-py3)

  • SUDS-py3 : версія SUDS Python3

  • spyne : Створити сервери легко, створити клієнтів трохи складніше. Документації дещо бракує.

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

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

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

З вищезазначеного я використовував лише SUDS особисто, і мені це дуже сподобалось.


2
SOAPy та SOAPpy насправді різні. Я редагував, щоб уточнити, і перетворив публікацію у вікі спільноти.
Самат Джайн

17
+1 для SUDS, чудова бібліотека! У мене виникли проблеми з використанням SUDS з веб-сервісами HTTPS за проксі. Виявляється, це відома urllib2проблема Python . Дивіться мою відповідь для отримання більш детальної інформації.
sstock

4
Я спробував SUD, але він відкрився в нескінченний цикл при відкритті WSDL; потім python кинув помилку межі рекурсії. Я знайшов цей відкритий квиток у зв'язку з проблемою: fedorahosted.org/suds/ticket/239 Мабуть, це була помилка, що ламала бібліотеку 3 роки тому, і досі її не виправлено.
Кнопки840


1
Я сьогодні почав використовувати SUDS лише для отримання даних. Він без проблем обробляв основну програму autikey в заголовках мила, і відповіді було досить легко проаналізувати. Документація також була надзвичайно пристойною.
сахарин

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. Питання вже вирішено .


Щойно я встановив його, і хоча я абсолютно новачок у Python, він почувався дуже інтуїтивно зрозумілим, і я міг надсилати запити SUDS я хвилин. Бібліотека чудова!
Леонід

1
Ви не хочете оновлювати цю. Я прошу, бо натиснув на посилання, і помилка виправлена.
thepang

3
Сором, здається, більше не підтримується
палм

Перед нами добре працює добре. Однак це дуже повільно. Отримання мильного файлу xml займає 0,5 секунди, а його обробка займає 5 секунд на двоядерній машині!
TjerkW

1
@paulm: спробуйте bitbucket.org/jurko/suds
johndodo

19

Я мав хороший досвід роботи з SUDS https://fedorahosted.org/suds

Використовували їх TestSuite в якості документації.


1
SUDS - приголомшливий! дійсно простий у використанні, хороші документи, чудові речі!
Сандер Верслуйс

1
Підтримується, підтримка python3 fork: suds-jurko . pip install suds-jurko
laffuste

Я намагаюся зателефонувати до асинхронного мила з apd, добре працюю, але не отримую жодної відповіді, чи може хтось допомогти у цьому, ч. Мій Q .: stackoverflow.com/questions/39227719/…
Vikram Singh Chandel

10

SUDS - це шлях, без сумнівів.


5
А також не працює на великій кількості файлів WSDL. Щоб підтримати цю претензію - наприклад, API Bing Maps, деякі з них виходять з ладу, і 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 або хоче вивчити його, я думаю, що це хороший вибір для початку.


2

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

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


2

На моєму висновку ми маємо таке:

Сторона клієнта мила:

використовувати тільки суди-jurko (оновлено 2016 р.) підошви добре підтримується та оновлюється.

ОНОВЛЕННЯ 06/2017: Бібліотека suds-jurko не оновлюється і, очевидно , покидається ,

Я перевірив zeep- бібліотеку, але отримав обмеження навколо токенів, тепер просто підтримую UsernameToken, повідомляю про помилку щоб створити маркер часової позначки та автор оновив код, щоб виправити це.

Zeep старт хороший і має гарну документацію , тому я нещодавно переніс свій код з suds на zeep і працює чудово.

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

У нас є вибір TGWS, soaplib (pysimplesoap не тестується). ІМХО, і допомога soaplib повинна бути вибором.

З повагою,


Чи є добра документація / зразки для Suds-jurko? у репо є декілька .rst файлів, але не так багато в документації, як користуватися бібліотекою.
ierdna

1

Як я запропонував тут, я рекомендую зробити свій власний. Насправді це не так складно, і я підозрюю, що це причина, що там немає кращих бібліотек Python SOAP.


1

засмаги досить непогані. Я спробував SOAPpy, але не змусив його працювати зовсім так, як мені потрібно, тоді як підошви спрацьовували дуже відразу.




0

Я використовую SOAPpy з Python 2.5.3 у виробничих умовах.

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


1
Ми зробили те саме і використовуємо SOAPpy з Python 2.6.3.
Джо Л.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.