การสร้าง Zeep Client จาก WSDL ระยะไกลอาจดึงเอกสารนั้นและ import ของมันทันที กำหนดค่า Transport ก่อน แทนที่จะตั้ง proxy หลังจาก 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 จริงของคำอธิบายบริการ หากบริการนั้นและ import ของมันเข้าถึงได้แบบสาธารณะและอนุญาตให้ใช้ proxy สาธารณะ รายการ proxy HTTP จะให้ผู้สมัครสำหรับ proxy URL ของเซสชัน เก็บเซสชันที่กำหนดค่าไว้ให้ยังมีชีวิตสำหรับการดำเนินการ SOAP ถัดไป แล้วปิดเมื่องานนั้นสิ้นสุด

Transport.timeout ควบคุมการโหลด WSDL และ XSD operation_timeout ควบคุมคำขอ HTTP สำหรับการดำเนินการของบริการ ดังนั้นการหมดเวลาเมทาดาทาระหว่างสร้าง Client จึงเป็นขั้นตอนที่ต่างจากการหมดเวลาของการเรียกเมธอดในภายหลัง

ในตัวอย่างนี้ การผสานกับสภาพแวดล้อมของ Requests ยังทำงานอยู่ หากค่าพร็อกซีจากสภาพแวดล้อมขัดแย้งกับเส้นทางที่ต้องการอย่างชัดเจน ให้ใช้ session.trust_env=False และระบุ CA bundle และการตั้งค่าการตรวจสอบสิทธิ์ที่จำเป็นอย่างชัดเจน

ตรวจสอบ URL ของเอกสารที่ import เมื่อการเริ่มต้นยังล้มเหลว WSDL ระดับบนสุดอาจโหลดได้สำเร็จในขณะที่ schema ที่ import ใช้ hostname หรือ protocol ปลายทางอื่น

บทความที่เกี่ยวข้อง