Zeep treba proxy prije nego što pročita WSDL
Stvorite Requests sesiju i Zeep Transport prije nego što izgradite Client iz udaljenog WSDL-a.
Izgradnja Zeep Clienta iz udaljenog WSDL-a može odmah dohvatiti taj dokument i njegove importe. Konfigurirajte Transport prvo, umjesto da postavljate proxy nakon što je Client već pokušao učitati opis usluge.
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 je stvarni URL opisa usluge. Ako su ta usluga i njezini importi javno dostupni i ako su javni proxyji dopušteni, popis HTTP proxyja daje kandidate za proxy URL-ove sesije. Održavajte konfiguriranu sesiju aktivnom za sljedeće SOAP operacije, a zatim je zatvorite kada taj posao završi.
Transport.timeout kontrolira učitavanje WSDL-a i XSD-a. operation_timeout kontrolira HTTP zahtjeve za operacije usluge. Zato je istek vremena metapodataka tijekom izgradnje Clienta druga faza od kasnijeg isteka vremena poziva metode.
U ovom primjeru integracija s okruženjem biblioteke Requests ostaje aktivna. Ako se vrijednosti proxyja iz okruženja sukobljavaju s izričito potrebnom rutom, upotrijebite session.trust_env=False i izričito navedite potreban CA paket i postavke autentifikacije.
Provjerite URL uvezenog dokumenta ako inicijalizacija i dalje ne uspijeva. Vrhunski WSDL može se uspješno učitati dok uvezena shema koristi drugo ime hosta ili odredišni protokol.