Zeep potrebuje proxy skôr, než prečíta WSDL
Vytvorte reláciu Requests a Zeep Transport predtým, než zostavíte Client zo vzdialeného WSDL.
Zostavenie Zeep Client zo vzdialeného WSDL môže okamžite stiahnuť tento dokument a jeho importy. Najprv nakonfigurujte Transport, namiesto nastavovania proxy po tom, čo sa Client už pokúsil načítať opis služby.
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 skutočná URL opisu služby. Ak je táto služba a jej importy verejne dostupné a verejné proxy sú povolené, zoznam HTTP proxy poskytuje kandidátov pre proxy URL relácie. Udržujte nakonfigurovanú reláciu aktívnou pre nasledujúce operácie SOAP a po skončení tejto práce ju zatvorte.
Transport.timeout riadi načítavanie WSDL a XSD. operation_timeout riadi HTTP požiadavky pre operácie služby. Časový limit metadát počas zostavovania Client je preto iná fáza ako neskorší časový limit volania metódy.
V tomto príklade zostáva integrácia s prostredím Requests aktívna. Ak hodnoty proxy z prostredia kolidujú s výslovne požadovanou trasou, použite session.trust_env=False a výslovne uveďte potrebný CA balík a nastavenia overovania.
Skontrolujte URL importovaného dokumentu, ak inicializácia stále zlyháva. WSDL najvyššej úrovne sa môže úspešne načítať, zatiaľ čo importovaná schéma používa iné meno hostiteľa alebo cieľový protokol.