Thư viện máy khách SOAP nào tồn tại cho Python và tài liệu cho chúng ở đâu? [đóng cửa]


333

Tôi chưa bao giờ sử dụng SOAP trước đây và tôi là người mới đối với Python. Tôi đang làm điều này để làm quen với cả hai công nghệ. Tôi đã cài đặt SOAPlib và tôi đã cố đọc tài liệu Khách hàng của họ , nhưng tôi không hiểu rõ lắm. Có điều gì khác tôi có thể xem xét để phù hợp hơn khi trở thành thư viện SOAP Client cho Python không?

Chỉnh sửa: Chỉ trong trường hợp có ích, tôi đang sử dụng Python 2.6.


1
phải là SOAP không, chẳng hạn như sử dụng các dịch vụ web có sẵn? Xmlrpclib của Python rất đơn giản để sử dụng và tôi đã di chuyển các dịch vụ SOAP của chúng tôi sang XMLRPC với nó.
Kirk Strauser

26
Đôi khi, người ta chỉ muốn kết nối với dịch vụ CHỈ được cung cấp qua SOAP vì vậy có - lib python tốt là thứ mà người ta sẽ sớm hay muộn cần. Người ta sẽ không có cơ hội thuyết phục nhà cung cấp dịch vụ thay thế SOAP bằng thứ gì đó "sạch hơn" ...
rombarcz

34
Bất cứ ai cũng có thể cung cấp một bản cập nhật có liên quan trong năm 2011? Rõ ràng không ai có thể hỏi câu hỏi này một lần nữa.
Marcin

1
FYI: Tôi đã mở một bài đăng tương tự nhắm mục tiêu SOAP cho Python 3 : stackoverflow.com/questions/7817303/
Đổi

5
Bất cứ ai truy cập câu hỏi này, bỏ phiếu để mở lại nó để thông tin có thể vẫn còn hiện tại / câu trả lời mới có thể được đăng.
ocodo

Câu trả lời:


388

Cập nhật (2016):

Nếu bạn chỉ cần máy khách SOAP, có thư viện được duy trì tốt gọi là zeep . Nó hỗ trợ cả Python 2 và 3 :)


Cập nhật:

Ngoài những gì được đề cập ở trên, tôi sẽ đề cập đến trang Python WebService luôn cập nhật với tất cả các mô-đun được bảo trì và khuyến nghị tích cực cho SOAP và tất cả các loại dịch vụ web khác.


Thật không may, hiện tại, tôi không nghĩ có một thư viện Python SOAP "tốt nhất". Mỗi cái chính có sẵn đều có ưu và nhược điểm riêng.

Thư viện cũ hơn:

  • SOAPy : Là "tốt nhất", nhưng không còn được duy trì. Không hoạt động trên Python 2.5+

  • ZSI : Rất đau khi sử dụng và phát triển chậm. Có một mô-đun gọi là "SOAPpy", khác với SOAPy (ở trên).

Thư viện "mới hơn":

  • SUDS : Rất Pythonic và dễ dàng tạo các máy khách SOAP tiêu thụ WSDL. Tạo máy chủ SOAP khó khăn hơn một chút. (Gói này không hoạt động với Python3. Đối với Python3, xem SUDS-py3)

  • SUDS-py3 : Phiên bản Python3 của SUDS

  • spyne : Tạo máy chủ rất dễ dàng, tạo ra các máy khách khó khăn hơn một chút. Tài liệu có phần thiếu.

  • ladon : Tạo máy chủ giống như trong Soaplib (sử dụng trang trí). Ladon trưng ra nhiều giao diện hơn SOAP cùng một lúc mà không cần thêm mã người dùng.

  • pysimplesoap : rất nhẹ nhưng hữu ích cho cả máy khách và máy chủ - bao gồm tích hợp máy chủ web2py đi kèm với web2py.

  • SOAPpy : Khác biệt với SOAPpy bị bỏ rơi được lưu trữ tại liên kết ZSI ở trên, phiên bản này thực sự được duy trì cho đến năm 2011, bây giờ dường như nó cũng bị bỏ rơi.
  • Soaplib : Dễ dàng sử dụng thư viện python để viết và gọi các dịch vụ web xà phòng. Các dịch vụ web được viết bằng xà phòng rất đơn giản, gọn nhẹ, hoạt động tốt với các triển khai SOAP khác và có thể được triển khai dưới dạng các ứng dụng WSGI.
  • osa : Thư viện máy khách python SOAP nhanh / mỏng dễ sử dụng.

Trong số trên, tôi chỉ sử dụng SUDS cá nhân và tôi rất thích nó.


2
SOAPy và SOAPpy thực sự khác nhau. Tôi đã chỉnh sửa để làm rõ và biến bài đăng thành wiki cộng đồng.
Samat Jain

17
+1 cho SUDS, thư viện tuyệt vời! Tôi gặp vấn đề khi sử dụng SUDS với các dịch vụ web HTTPS đằng sau một proxy. Hóa ra đó là một urllib2vấn đề Python đã biết . Xem câu trả lời của tôi để biết thêm chi tiết.
sstock

4
Tôi đã thử SUD, nhưng nó đã đi vào một vòng lặp vô hạn khi mở WSDL; sau đó python đã ném một lỗi giới hạn đệ quy. Tôi tìm thấy vé mở này liên quan đến vấn đề: fedorahosted.org/suds/ticket/239 Rõ ràng đây là một lỗi thư viện phá vỡ 3 năm trước, và vẫn chưa được sửa.
Nút840

11
Có một ngã ba
SUDS được

1
Tôi đã bắt đầu sử dụng SUDS ngay hôm nay để chỉ tìm nạp dữ liệu. Nó xử lý một xác thực apikey cơ bản trong các tiêu đề xà phòng mà không có bất kỳ vấn đề nào, và các câu trả lời khá dễ dàng để phân tích. Các tài liệu cũng là cổ tích phong nha.
sacarine

47

Tôi đã làm theo lời khuyên của các câu trả lời khác cho câu hỏi này và đã thử SUDS . Sau khi sử dụng nó "trong sự tức giận" tôi phải đồng ý: SUDS rất hay! Rất khuyến khích!

Tôi đã gặp rắc rối khi gọi các dịch vụ web dựa trên HTTPS từ phía sau một proxy. Tại thời điểm viết bài này, điều này ảnh hưởng đến tất cả các máy khách dịch vụ web Python sử dụng urllib2, vì vậy tôi sẽ ghi lại giải pháp tại đây.

Việc urllib2vận chuyển mô-đun với python 2.6.2 trở xuống sẽ không cấp CONNECTcho proxy cho các phiên HTTPS-over-HTTP-proxy. Điều này dẫn đến thời gian chờ lâu hoặc nếu bạn may mắn, một lỗi giống như:

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

Đây là vấn đề1424152 trên trình theo dõi lỗi Python. Có các bản vá được đính kèm với báo cáo lỗi sẽ sửa lỗi này trong Python 2.x và Python 3.x. Vấn đề đã được khắc phục .


Chỉ cần cài đặt nó và mặc dù tôi hoàn toàn mới với Python, nó cảm thấy rất trực quan và tôi có thể gửi yêu cầu SUDS trong vài phút. Thư viện thật tuyệt!
Leonid

1
Bạn có nhớ cập nhật cái này không. Tôi hỏi vì tôi đã nhấp vào liên kết và lỗi đã được sửa.
tshepang

3
Xấu hổ vì nó dường như không còn được duy trì
paulm

Cho chúng tôi suds cũng hoạt động tốt .. Tuy nhiên nó rất chậm. Lấy một tập tin xà phòng xml mất 0,5 giây và xử lý mất 5 giây trên máy lõi kép!
TjerkW


19

Tôi đã có trải nghiệm tốt với SUDS https://fedorahosted.org/suds

Đã sử dụng TestSuite của họ làm tài liệu.


1
SUDS thật tuyệt vời! thực sự dễ sử dụng, tài liệu tốt, công cụ tuyệt vời!
Sander Versluys

1
Duy trì, ngã ba hỗ trợ python3: suds-Jurko . pip install suds-jurko
laffuste

Tôi đang cố gắng gọi api xà phòng async bằng suds, hoạt động tốt nhưng không nhận được bất kỳ phản hồi nào, ai đó có thể giúp tôi không, hả. Q: stackoverflow.com/questions/39227719/
trộm

10

SUDS là con đường để đi, không có câu hỏi về nó.


5
Và nó cũng thất bại trên một số lượng lớn các tệp WSDL. Để hỗ trợ cho yêu cầu đó - ví dụ: API bản đồ Bing, một số lỗi này không thể phân tích được chúng.

3
tôi thấy SUDS hỗ trợ các điểm cuối SSL.
leonigmig


6

SUDS rất dễ sử dụng, nhưng không được đảm bảo để được đăng ký lại. Nếu bạn giữ đối tượng WSDL Client () trong một ứng dụng luồng để có hiệu suất tốt hơn, sẽ có một số rủi ro liên quan. Giải pháp cho rủi ro này, phương thức clone (), ném lỗi Python 5508 không thể phục hồi, có vẻ như in nhưng không thực sự ném ngoại lệ. Có thể gây nhầm lẫn, nhưng nó hoạt động. Nó vẫn là máy khách Python SOAP tốt nhất.


4

Chúng tôi đã phát hành một thư viện mới: PySimpleSOAP , cung cấp hỗ trợ cho máy khách / máy chủ đơn giản và chức năng. Mục tiêu của nó là: dễ sử dụng và linh hoạt (không yêu cầu lớp, mã tự phát hoặc xml), hướng nội và tạo WSDL, tuân thủ tiêu chuẩn WS-I, tương thích (bao gồm Java AXIS, .NET và Jboss WS). Nó được đưa vào Web2Py để kích hoạt các giải pháp ngăn xếp đầy đủ (bổ sung cho các giao thức được hỗ trợ khác như XML_RPC, JSON, AMF-RPC, v.v.).

Nếu ai đó đang học SOAP hoặc muốn điều tra nó, tôi nghĩ rằng đó là một lựa chọn tốt để bắt đầu.


2

Tôi tin rằng Soaplib đã từ chối khách hàng SOAP của mình ('người gửi') để ủng hộ suds. Tại thời điểm này, Soaplib tập trung vào việc trở thành một máy chủ SOAP bất khả tri ('người nhận'). Hiện tại Soaplib đang được phát triển tích cực và thường được thảo luận trong danh sách gửi thư Python SOAP:

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


2

Trong kết luận của tôi, chúng tôi có điều này:

Xà phòng phía khách hàng:

chỉ sử dụng suds Suds-judko (cập nhật 2016) được duy trì và cập nhật tốt.

CẬP NHẬT 06/2017: thư viện suds-Jurko không được cập nhật và dường như bị bỏ rơi ,

tôi đã thử nghiệm thư viện zeep nhưng có giới hạn xung quanh mã thông báo, bây giờ chỉ cần hỗ trợ UsernameToken, tôi đã báo cáo lỗi để tạo mã thông báo dấu thời gian và tác giả cập nhật mã để sửa lỗi.

Zeep bắt đầu tốt và có tốt tài liệu , vì vậy gần đây tôi đã di chuyển mã của mình từ suds sang zeep và hoạt động tốt.

Phía máy chủ xà phòng:

Chúng tôi có TGWS, xà phòng (pysimplesoap chưa được kiểm tra) sử dụng IMHO và giúp xà phòng phải là sự lựa chọn.

Trân trọng,


Có tài liệu / mẫu tốt cho Suds-Jurko không? trong repo có một vài tệp .rst nhưng không có nhiều tài liệu về cách sử dụng thư viện.
ierdna

1

Như tôi đề nghị ở đây, tôi khuyên bạn nên tự lăn. Điều đó thực sự không khó và tôi nghi ngờ đó là lý do không có thư viện Python SOAP tốt hơn ngoài kia.


1

suds là khá tốt. Tôi đã thử SOAPpy nhưng không làm cho nó hoạt động theo cách tôi cần trong khi suds hoạt động khá nhiều ngay lập tức.




0

Tôi đang sử dụng SOAPpy với Python 2.5.3 trong cài đặt sản xuất.

Tôi đã phải chỉnh sửa thủ công một vài tệp trong SOAPpy (một cái gì đó về mã tiêu đề nằm sai vị trí) nhưng khác với nó đã hoạt động và tiếp tục làm như vậy rất đáng tin cậy.


1
Chúng tôi đã làm như vậy và đang sử dụng SOAPpy với Python 2.6.3.
Joe L.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.