Taaklokale Requests-proxy in Google Cloud Composer
Maak een taaklokale Requests-sessie met een expliciete route in plaats van de proxy-omgeving van een gedeeld workerproces te wijzigen.
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.