Стварэнне 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 можа паспяхова загрузіцца, а імпартаваная схема выкарыстоўвае іншае імя хоста або пратакол прызначэння.

Падобныя артыкулы