בניית 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 ברמה העליונה יכול להיטען בהצלחה בעוד סכימה מיובאת משתמשת בשם מארח או בפרוטוקול יעד אחרים.

מאמרים קשורים