Construír un Client de Zeep desde un WSDL remoto pode obter de inmediato ese documento e as súas importacións. Configure o transporte primeiro, en lugar de establecer un proxy despois de que Client xa intentase cargar a descrición do servizo.

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 é a URL real da descrición do servizo. Se ese servizo e as súas importacións son accesibles publicamente e se permiten proxies públicos, a lista de proxies HTTP ofrece candidatos para as URL de proxy da sesión. Manteña viva a sesión configurada para as operacións SOAP posteriores e péchea cando remate ese traballo.

Transport.timeout controla a carga de WSDL e XSD. operation_timeout controla as solicitudes HTTP das operacións do servizo. Por iso, un tempo de espera de metadatos durante a construción do Client é unha etapa distinta dunha chamada a método que caduca máis tarde.

Neste exemplo, a integración co ambiente de Requests segue activa. Se os valores de proxy do ambiente entran en conflito cunha ruta requirida explicitamente, use session.trust_env=False e proporcione explicitamente o paquete CA e a configuración de autenticación necesarios.

Comprobe a URL do documento importado cando a inicialización segue fallando. Un WSDL de nivel superior pode cargarse correctamente mentres un esquema importado usa outro nome de host ou protocolo de destino.

Artigos relacionados