파이썬에는 어떤 SOAP 클라이언트 라이브러리가 있으며, 그 문서는 어디에 있습니까? [닫은]


333

나는 전에 SOAP 을 사용한 적이 없으며 파이썬을 처음 접합니다. 나는 두 기술에 익숙해지기 위해 이것을하고 있습니다. SOAPlib을 설치 했는데 클라이언트 설명서 를 읽으려고했지만 너무 잘 이해하지 못했습니다. 파이썬을위한 SOAP 클라이언트 라이브러리가되기에 더 적합한 다른 것이 있습니까?

편집 : 도움이되는 경우를 대비하여 Python 2.6을 사용하고 있습니다.


1
그것이합니까 이 같은 기존 웹 서비스를 사용하는 등, SOAP로? 파이썬의 xmlrpclib는 사용이 간단하며 SOAP 서비스를 XMLRPC로 마이그레이션했습니다.
— Kirk Strauser

26
때로는 SOAP를 통해서만 제공되는 서비스에 연결하기를 원하기 때문에 그렇습니다. 좋은 파이썬 SOAP 라이브러리는 조만간 필요할 것입니다. 하나는 ... 뭔가 "청소기"로 SOAP를 교체 서비스 제공을 설득 할 수있는 기회가되지 않습니다
— rombarcz

34
2011 년에 누구나 관련 업데이트를 제공 할 수 있습니까? 분명히 아무도이 질문을 다시 할 수 없습니다.
— Marcin

1
참고 : Python 3 용 SOAP을 대상으로하는 비슷한 게시물을 열었습니다 : stackoverflow.com/questions/7817303/…
— gecco

5
이 질문을 방문하는 사람은 누구나 정보를 최신 / 새로운 답변으로 게시 할 수 있도록 다시 열어야합니다.
— ocodo

답변:


388

업데이트 (2016) :

SOAP 클라이언트 만 필요한 경우 zeep 이라는 잘 관리 된 라이브러리가 있습니다 . 그것은 파이썬 2와 3을 모두 지원합니다 :)


최신 정보:

위에서 언급 한 것 외에도, 파이썬 웹 서비스 페이지를 참조 할 것입니다.이 웹 페이지는 항상 적극적으로 유지 관리되고 권장되는 모든 모듈이 SOAP 및 다른 웹 서비스 유형에 대해 최신 상태입니다 .


불행히도 현재로서는 "최고의"Python SOAP 라이브러리가 없다고 생각합니다. 이용할 수있는 주류는 각각 장단점이 있습니다.

오래된 도서관 :

  • SOAPy : "최고"였지만 더 이상 유지되지 않습니다. Python 2.5 이상에서는 작동하지 않습니다

  • ZSI : 사용하기가 매우 어려우며 개발 속도가 느립니다. SOAPy와는 다른 "SOAPpy"라는 모듈이 있습니다 (위).

"최신"라이브러리 :

  • SUDS : 매우 파이썬적이고 WSDL을 소비하는 SOAP 클라이언트를 쉽게 만들 수 있습니다. SOAP 서버를 만드는 것은 조금 더 어렵습니다. (이 패키지는 Python3에서는 작동하지 않습니다. Python3의 경우 SUDS-py3 참조)

  • SUDS-py3 : SUDS 의 Python3 버전

  • spyne : 서버를 만드는 것은 쉽고 클라이언트를 조금 더 어렵게 만듭니다. 문서가 다소 부족합니다.

  • ladon : 서버 만들기는 soaplib에서와 비슷합니다 (데코레이터 사용). Ladon은 추가 사용자 코드없이 SOAP보다 많은 인터페이스를 동시에 노출합니다.

  • pysimplesoap : 매우 가벼우 나 클라이언트와 서버 모두에 유용합니다-web2py와 함께 제공되는 web2py 서버 통합을 포함합니다.

  • SOAPpy : 위의 ZSI 링크에서 호스팅되는 버려진 SOAPpy와 구별되는이 버전은 실제로 2011 년까지 유지되었으므로 이제는 버린 것 같습니다.
  • soaplib : SOAP 웹 서비스를 작성하고 호출하기 위해 사용하기 쉬운 Python 라이브러리. soaplib로 작성된 웹 서비스는 단순하고 가벼우 며 다른 SOAP 구현과 잘 작동하며 WSGI 애플리케이션으로 배치 될 수 있습니다.
  • osa : SOAP python 클라이언트 라이브러리를 빠르고 사용하기 쉽습니다.

위 중 개인적으로 SUDS 만 사용했으며 많이 좋아했습니다.


2
SOAPy와 SOAPpy는 실제로 다릅니다. 명확하게 편집하고 게시물을 커뮤니티 위키로 바꿨습니다.
— Samat Jain

17
SUDS에 +1, 훌륭한 라이브러리! 프록시 뒤의 HTTPS 웹 서비스에서 SUDS를 사용하는 데 문제가 발생했습니다. 그것이 알려진 파이썬 urllib2문제 라고 밝혀졌습니다 . 자세한 내용은 내 답변을 참조하십시오.
— sstock

4
SUD를 시도했지만 WSDL을 열 때 무한 루프에 빠졌습니다. 파이썬은 재귀 한계 오류를 던졌습니다. 이 문제와 관련하여이 공개 티켓을 찾았습니다. fedorahosted.org/suds/ticket/239 분명히 이것은 3 년 전에 라이브러리가 깨지는 버그였으며 여전히 수정되지 않았습니다.
— Buttons840

11
에서 SUDS의 유지 포크있다 bitbucket.org/jurko/suds은
— Sjaak Trekhaak

1
오늘 데이터를 가져 오기 위해 SUDS를 사용하기 시작했습니다. 비누 헤더의 기본 apikey 인증을 아무런 문제없이 처리했으며 응답을 구문 분석하기가 매우 쉽습니다. 문서도 요정 괜찮 았습니다.
— 사카린

47

나는이 질문에 대한 다른 답변의 조언을 따르고 SUDS 를 시도했다. "분노한 마음으로"그것을 사용한 후에 나는 동의해야한다 : SUDS는 매우 멋지다! 추천!

프록시 뒤에서 HTTPS 기반 웹 서비스를 호출하는 데 문제가 발생했습니다. 이 글을 쓰는 시점에서 이것은를 사용하는 모든 Python 웹 서비스 클라이언트에 영향을 미치므로 urllib2여기에 솔루션을 문서화하겠습니다.

urllib2python 2.6.2 이하와 함께 제공 되는 모듈 CONNECT은 HTTPS-HTTP-proxy 세션의 프록시에 a 를 발행하지 않습니다 . 시간이 오래 걸리거나 운이 좋으면 다음과 같은 오류가 발생합니다.

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

이것은 Python 버그 추적기에서 발생하는 문제 1424152 입니다. Python 2.x 및 Python 3.x에서이 문제를 해결하는 패치가 버그 보고서에 첨부되어 있습니다. 이 문제는 이미 해결되었습니다 .


방금 설치했는데 파이썬에 완전히 익숙하지 않더라도 매우 직관적으로 느껴져서 몇 분 안에 SUDS 요청을 보낼 수 있습니다. 도서관은 훌륭합니다!
— Leonid

1
이것을 업데이트 하시겠습니까? 링크를 클릭했기 때문에 묻고 버그가 수정되었습니다.
— tshepang

3
수치가 더 이상 유지되지 않는 것 같습니다
— paulm

앞의 비눗물도 잘 작동합니다. 그러나 매우 느립니다. xml soap 파일을 검색하는 데 0.5 초가 걸리고 듀얼 코어 시스템에서 5 초가 걸립니다.
— TjerkW


19

SUDS에 대한 좋은 경험이 있습니다 https://fedorahosted.org/suds

TestSuite를 문서로 사용했습니다.


1
SUDS는 대단합니다! 정말 사용하기 쉽고, 좋은 문서, 훌륭한 것들!
— 샌더 Versluys

1
python3 지원 포크 : suds-jurko 유지 . pip install suds-jurko
— laffuste 2016 년

내가 잘 작동하지만 어떤 응답, 캔 누군가의 도움을받지 못하고, 비눗물로 호출 비동기 비누 API에 노력하고, 시간 내 Q : stackoverflow.com/questions/39227719/...
— 비 크람 싱 Chandel

10

SUDS는 의심의 여지없이 갈 길입니다.


5
또한 많은 수의 WSDL 파일에서도 실패합니다. 그 주장을 뒷받침하기 위해-예를 들어 Bing maps API는 이들 중 일부가 실패하고 비웃을 수 없습니다.

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 클라이언트 ( '보낸 사람')를 더 이상 사용하지 않는다고 생각합니다. 현재 soaplib은 웹 프레임 워크에 독립적 인 SOAP 서버 ( '수신자')에 중점을두고 있습니다. 현재 soaplib는 현재 개발 중이며 일반적으로 Python SOAP 메일 링리스트에서 논의됩니다.

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


2

에서 내 결론 우리는이있다 :

비누 클라이언트 쪽 :

Suds-jurko (2016 년 업데이트) 만 사용하십시오 .

업데이트 06/2017 : suds-jurko 라이브러리가 업데이트되지 않았으며 분명히 버려졌습니다 .

zeep 라이브러리를 테스트 했지만 토큰에 대한 제한이 생겼 습니다. 이제 UsernameToken 만 지원 하면 타임 스탬프 토큰을 생성하고 코드를 업데이트하여 버그 를 수정 하는 버그 를 보고 합니다.

Zeep은 잘 시작하고 좋은 문서 를 가지고 있으므로 최근에 코드를 suds에서 zeep으로 마이그레이션하고 정상적으로 작동합니다.

비누 서버 측 :

우리는 TGWS, soaplib (pysimplesoap이 테스트되지 않음) IMHO를 사용하고 soaplib를 선택하도록 도와줍니다.

친애하는,


Suds-jurko에 대한 유용한 문서 / 샘플이 있습니까? 리포지토리에는 몇 개의 .rst 파일이 있지만 라이브러리 사용 방법을 문서화하는 방법은별로 없습니다.
— ierdna 2016 년

1

여기에서 제안한 대로 직접 롤백하는 것이 좋습니다. 실제로 그렇게 어렵지는 않으며 더 나은 Python SOAP 라이브러리가없는 이유입니다.


1

비눗물은 꽤 좋습니다. SOAPpy를 시도했지만 필요한 방식으로 작동하지는 않았지만 비눗물은 거의 즉시 작동했습니다.




0

프로덕션 설정에서 Python 2.5.3과 함께 SOAPpy를 사용하고 있습니다.

SOAPpy (헤더 코드가 잘못된 위치에 있음)에서 두 개의 파일을 수동으로 편집해야했지만 그 이외의 파일은 효과가 있었고 매우 안정적으로 계속 수행했습니다.


1
우리는 똑같이 파이썬 2.6.3에서 SOAPpy를 사용하고 있습니다.
— Joe L.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.