Zeep ต้องมี proxy ก่อนอ่าน WSDL
สร้างเซสชัน Requests และ Zeep Transport ก่อนสร้าง Client จาก WSDL ระยะไกล
การสร้าง 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 ปลายทางอื่น