Jeśli zadanie Cloud Composer potrzebuje jednego wychodzącego żądania HTTP przez proxy, skonfiguruj klienta HTTP wewnątrz callable zadania:

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

Używaj tego callable w ramach istniejącego układu zadań DAG. Proxy musi być osiągalne z workera wykonującego zadanie. Dla dozwolonych wywołań publicznego API bez uwierzytelniania proxy lista proxy HTTP dostarcza kandydatów do adresu URL proxy HTTP tej sesji. Uwierzytelniony adres URL lub inną konfigurację konta przechowuj w przeznaczonym dla wdrożenia źródle sekretów.

Sesja i odpowiedź są zamykane po zakończeniu funkcji. trust_env=False wyłącza integrację Requests ze środowiskiem, uniemożliwiając odziedziczonym ustawieniom proxy zastąpienie zamierzonego zachowania tego klienta, a także wyłącza wybór pakietu CA przez Requests na podstawie środowiska. W razie potrzeby podaj zamierzony pakiet CA przez opcję verify tego klienta.

Zmienne środowiskowe skonfigurowane dla zarządzanego środowiska Airflow mają szerszy zakres i ograniczenia określone przez platformę. Przekazanie trasy tej sesji utrzymuje decyzję przy operacji HTTP tego zadania bez zmieniania os.environ dla innego kodu w procesie worker.

Powiązane artykuły