עבור משימת Cloud Composer שזקוקה לבקשת HTTP יוצאת אחת דרך פרוקסי, הגדירו את לקוח ה-HTTP בתוך ה-callable של המשימה:

def fetch_status():
    import requests

    with requests.Session() as session:
        session.trust_env = False
        with session.get(
            'https://api.example/health',
            proxies={'https': 'http://proxy.example:8080'},
            timeout=(5, 30),
        ) as response:
            response.raise_for_status()
            return response.status_code

השתמשו ב-callable הזה דרך סידור המשימות הקיים ב-DAG. הפרוקסי חייב להיות נגיש מה-worker שמבצע אותה. עבור קריאות API ציבוריות מותרות ללא אימות פרוקסי, רשימת פרוקסי ה-HTTP מספקת מועמדים לכתובת ה-URL של פרוקסי ה-HTTP של הסשן. שמרו כתובת URL מאומתת או תצורת חשבון אחרת במקור הסודות המיועד לפריסה.

הסשן והתגובה נסגרים כאשר הפונקציה מסתיימת. trust_env=False מבטל את האינטגרציה של Requests עם הסביבה, ומונע מהגדרות פרוקסי שעברו בירושה להחליף את ההתנהגות המיועדת של לקוח זה, וגם מכבה את בחירת ה-CA bundle של Requests לפי הסביבה. ספקו את ה-CA bundle המיועד דרך אפשרות ה-verify של לקוח זה בעת הצורך.

למשתני סביבה שהוגדרו עבור סביבת Airflow מנוהלת יש היקף רחב יותר ומגבלות שנקבעו על ידי הפלטפורמה. העברת המסלול לסשן הזה משאירה את ההחלטה קשורה לפעולת ה-HTTP של משימה זו בלי לשנות את os.environ עבור קוד אחר בתהליך ה-worker.

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