Construir um Client Zeep a partir de um WSDL remoto pode buscar imediatamente esse documento e as suas importações. Configure o transport primeiro, em vez de definir um proxy depois de o Client já ter tentado carregar a descrição do serviço.

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 é o URL real da descrição do serviço. Se esse serviço e as suas importações forem acessíveis publicamente e os proxies públicos forem permitidos, a lista de proxies HTTP fornece candidatos para os URLs de proxy da sessão. Mantenha a sessão configurada ativa para as operações SOAP seguintes e feche-a quando esse trabalho terminar.

Transport.timeout controla o carregamento de WSDL e XSD. operation_timeout controla os pedidos HTTP feitos para operações do serviço. Por isso, um tempo limite de metadados durante a construção do Client é uma etapa diferente de uma chamada de método que expira mais tarde.

Neste exemplo, a integração com o ambiente do Requests continua ativa. Se os valores de proxy do ambiente entrarem em conflito com uma rota explicitamente necessária, use session.trust_env=False e forneça explicitamente o pacote CA e as configurações de autenticação necessárias.

Verifique o URL do documento importado quando a inicialização continuar a falhar. Um WSDL de nível superior pode carregar com êxito enquanto um esquema importado usa outro nome de host ou protocolo de destino.

Artigos relacionados