Zeep은 WSDL을 읽기 전에 프록시가 필요하다
원격 WSDL에서 Client를 만들기 전에 Requests 세션과 Zeep Transport를 생성합니다.
원격 WSDL에서 Zeep Client를 만들면 해당 문서와 그 import를 즉시 가져올 수 있습니다. Client가 이미 서비스 설명을 로드하려고 시도한 뒤 프록시를 설정하는 대신, Transport를 먼저 구성하세요.
from requests import Session
from zeep import Client
from zeep.transports import Transport
session = Session()
session.proxies.update({
"http": "http://proxy.example.net:8080",
"https": "http://proxy.example.net:8080",
})
transport = Transport(
session=session,
timeout=10,
operation_timeout=30,
)
client = Client(wsdl_url, transport=transport)
wsdl_url은 실제 서비스 설명 URL입니다. 해당 서비스와 그 import에 공개적으로 접근할 수 있고 공개 프록시가 허용된다면, HTTP 프록시 목록이 세션의 프록시 URL 후보를 제공합니다. 구성한 세션은 이후 SOAP 작업을 위해 살려 두고, 그 작업이 끝나면 닫으세요.
Transport.timeout은 WSDL과 XSD 로딩을 제어합니다. operation_timeout은 서비스 작업을 위한 HTTP 요청을 제어합니다. 따라서 Client를 만드는 동안의 메타데이터 타임아웃은 나중에 메서드 호출이 타임아웃되는 것과 다른 단계입니다.
이 예제에서는 Requests의 환경 통합이 계속 활성화됩니다. 환경 프록시 값이 명시적으로 필요한 경로와 충돌한다면 session.trust_env=False를 사용하고 필요한 CA 번들과 인증 설정을 명시적으로 제공하세요.
초기화가 계속 실패하면 가져온 문서의 URL을 확인하세요. 최상위 WSDL은 정상적으로 로드되지만 가져온 schema가 다른 호스트 이름이나 대상 프로토콜을 사용할 수 있습니다.