Construir un Client de Zeep des d'un WSDL remot pot obtenir immediatament aquest document i les seves importacions. Configureu el transport primer, en lloc d'establir un proxy després que Client ja hagi intentat carregar la descripció del servei.

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 és l'URL real de la descripció del servei. Si aquest servei i les seves importacions són accessibles públicament i els proxys públics estan permesos, la llista de proxys HTTP proporciona candidats per als URL de proxy de la sessió. Mantingueu viva la sessió configurada per a les operacions SOAP posteriors i tanqueu-la quan acabi aquesta feina.

Transport.timeout controla la càrrega de WSDL i XSD. operation_timeout controla les sol·licituds HTTP fetes per a les operacions del servei. Per tant, un temps d'espera de metadades durant la construcció del Client és una etapa diferent d'una trucada a mètode que expira més tard.

En aquest exemple, la integració amb l'entorn de Requests continua activa. Si els valors de proxy de l'entorn entren en conflicte amb una ruta requerida explícitament, feu servir session.trust_env=False i proporcioneu explícitament el paquet CA i la configuració d'autenticació necessaris.

Comproveu l'URL del document importat quan la inicialització encara falla. Un WSDL de nivell superior pot carregar-se correctament mentre un esquema importat fa servir un altre nom d'amfitrió o protocol de destinació.

Articles relacionats