Якщо завданню 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-проксі надає кандидатів для HTTP-проксі URL сеансу. Зберігайте URL з автентифікацією або іншу конфігурацію облікового запису в передбаченому для розгортання джерелі секретів.

Сеанс і відповідь закриваються після виходу з функції. trust_env=False вимикає інтеграцію Requests із середовищем, не дозволяючи успадкованим налаштуванням проксі замінити передбачувану поведінку цього клієнта, а також вимикає вибір CA-пакета в Requests на основі середовища. За потреби передайте потрібний CA-пакет через опцію verify цього клієнта.

Змінні середовища, налаштовані для керованого середовища Airflow, мають ширшу область дії та обмеження, визначені платформою. Передача маршруту цьому сеансу залишає рішення прив’язаним до HTTP-операції цього завдання й не змінює os.environ для іншого коду в процесі worker.

Схожі статті