Zeep treba proxy prije nego što pročita WSDL
Napravite 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 njeni importi javno dostupni i ako su javni proxyji dopušteni, lista HTTP proxyja daje kandidate za proxy URL-ove sesije. Održavajte konfiguriranu sesiju aktivnom za naredne SOAP operacije, a zatim je zatvorite kada taj posao završi.
Transport.timeout kontroliše učitavanje WSDL-a i XSD-a. operation_timeout kontroliše HTTP zahteve za operacije usluge. Zato je istek vremena metapodataka tokom izgradnje Clienta druga faza od kasnijeg isteka vremena poziva metode.
U ovom primeru integracija sa okruženjem biblioteke Requests ostaje aktivna. Ako se vrednosti proxyja iz okruženja sukobljavaju sa izričito potrebnom rutom, koristite session.trust_env=False i izričito navedite potreban CA paket i postavke autentifikacije.
Proverite URL uvezenog dokumenta kada inicijalizacija i dalje ne uspeva. Vrhunski WSDL može se uspešno učitati dok uvezena šema koristi drugo ime hosta ili odredišni protokol.