Zeep се нуждае от проксито, преди да прочете WSDL
Създайте сесия на Requests и Zeep Transport, преди да построите Client от отдалечен WSDL.
Създаването на Zeep Client от отдалечен WSDL може веднага да изтегли този документ и неговите импорти. Конфигурирайте Transport първо, вместо да задавате прокси, след като Client вече е опитал да зареди описанието на услугата.
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 е действителният URL на описанието на услугата. Ако тази услуга и нейните импорти са публично достъпни и публичните проксита са разрешени, списъкът с HTTP проксита предоставя кандидати за прокси URL адресите на сесията. Дръжте конфигурираната сесия активна за следващите SOAP операции, след което я затворете, когато тази работа приключи.
Transport.timeout управлява зареждането на WSDL и XSD. operation_timeout управлява HTTP заявките за операциите на услугата. Затова изтичане на времето за метаданни по време на създаването на Client е различен етап от изтичането на времето при извикване на метод по-късно.
В този пример интеграцията с обкръжението на Requests остава активна. Ако стойностите на проксито от обкръжението противоречат на изрично изискван маршрут, използвайте session.trust_env=False и изрично предоставете необходимия CA пакет и настройки за удостоверяване.
Проверете URL адреса на импортирания документ, ако инициализацията все още се проваля. WSDL от най-горно ниво може да се зареди успешно, докато импортирана схема използва друго име на хост или протокол за местоназначение.