'n Taakplaaslike Requests-proxy in Google Cloud Composer
Skep 'n taakplaaslike Requests-sessie met 'n eksplisiete roete eerder as om die proxy-omgewing van 'n gedeelde werkerproses te verander.
Vir 'n Cloud Composer-taak wat een uitgaande HTTP-versoek deur 'n proxy benodig, stel die HTTP-kliënt binne die taak se callable op:
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 hierdie callable deur die DAG se bestaande taakreëling. Die proxy moet bereikbaar wees vanaf die werker wat dit uitvoer. Vir toegelate publieke API-oproepe sonder proxy-verifikasie verskaf die HTTP-proxylys kandidate vir die sessie se HTTP-proxy-URL. Hou 'n geauthentiseerde URL of ander rekeningkonfigurasie in die ontplooiing se beoogde geheimbron.
Die sessie en die respons sluit wanneer die funksie eindig. trust_env=False skakel Requests se omgewingsintegrasie uit, wat verhoed dat geërfde proxy-instellings hierdie kliënt se beoogde gedrag vervang, en skakel ook Requests se omgewingsgebaseerde keuse van die CA-bundel uit. Verskaf die beoogde CA-bundel deur hierdie kliënt se verify-opsie indien nodig.
Omgewingsveranderlikes wat vir 'n bestuurde Airflow-omgewing opgestel is, het 'n wyer omvang en platformgedefinieerde beperkings. Deur die roete aan hierdie sessie te gee, bly die besluit aan hierdie taak se HTTP-bewerking gekoppel sonder om os.environ vir ander kode in die werkerproses te verander.