Zeep צריך את ה-proxy לפני שהוא קורא את ה-WSDL
צרו את סשן Requests ואת Zeep Transport לפני בניית Client מ-WSDL מרוחק.
בניית Zeep Client מ-WSDL מרוחק עלולה להביא מיד את המסמך הזה ואת הייבואים שלו. הגדירו את ה-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 האמיתית של תיאור השירות. אם השירות והייבואים שלו נגישים לציבור ומותר להשתמש ב-proxy ציבוריים, רשימת ה-proxy של HTTP מספקת מועמדים לכתובות ה-proxy של הסשן. השאירו את הסשן המוגדר פעיל לפעולות SOAP הבאות, וסגרו אותו כשהעבודה הזו מסתיימת.
Transport.timeout שולט בטעינת WSDL ו-XSD. operation_timeout שולט בבקשות ה-HTTP של פעולות השירות. לכן פסק זמן של מטא-נתונים בזמן בניית Client הוא שלב שונה מפסק זמן של קריאת מתודה מאוחר יותר.
בדוגמה הזו האינטגרציה עם הסביבה של Requests נשארת פעילה. אם ערכי ה-proxy מהסביבה מתנגשים עם מסלול נדרש במפורש, השתמשו ב-session.trust_env=False וספקו במפורש את חבילת ה-CA ואת הגדרות האימות הנדרשות.
בדקו את כתובת ה-URL של המסמך המיובא כאשר האתחול עדיין נכשל. WSDL ברמה העליונה יכול להיטען בהצלחה בעוד סכימה מיובאת משתמשת בשם מארח או בפרוטוקול יעד אחרים.