برای یک وظیفه 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 تغییر کند.

مقالات مرتبط