Voor een Cloud Composer-taak die één uitgaand HTTP-verzoek via een proxy nodig heeft, configureer je de HTTP-client binnen de callable van de taak:

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

Gebruik deze callable via de bestaande taakindeling van de DAG. De proxy moet bereikbaar zijn vanaf de worker die de taak uitvoert. Voor toegestane openbare API-aanroepen zonder proxyauthenticatie levert de HTTP-proxylijst kandidaten voor de HTTP-proxy-URL van de sessie. Bewaar een geauthenticeerde URL of andere accountconfiguratie in de bedoelde geheimbron van de deployment.

De sessie en het antwoord sluiten wanneer de functie eindigt. trust_env=False schakelt de omgevingsintegratie van Requests uit, waardoor overgeërfde proxyinstellingen het bedoelde gedrag van deze client niet kunnen vervangen, en schakelt ook de op de omgeving gebaseerde CA-bundelkeuze van Requests uit. Geef de bedoelde CA-bundel zo nodig door via de verify-optie van deze client.

Omgevingsvariabelen die voor een beheerde Airflow-omgeving zijn geconfigureerd, hebben een breder bereik en door het platform bepaalde beperkingen. Door de route aan deze sessie te geven, blijft de beslissing aan de HTTP-bewerking van deze taak gekoppeld zonder os.environ te wijzigen voor andere code in het workerproces.

Gerelateerde artikelen