파이썬에는 어떤 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.