Построение 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 верхнего уровня может успешно загрузиться, тогда как импортированная схема использует другое имя хоста или протокол назначения.

Похожие статьи