Para uma tarefa do Cloud Composer que precisa de um pedido HTTP de saída através de um proxy, configure o cliente HTTP dentro do callable da tarefa:

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

Use este callable através da disposição de tarefas existente da DAG. O proxy tem de estar acessível a partir do worker que executa a tarefa. Para chamadas de API públicas permitidas sem autenticação de proxy, a lista de proxies HTTP fornece candidatos para o URL de proxy HTTP da sessão. Guarde um URL autenticado ou outra configuração de conta na fonte de segredos prevista da implementação.

A Session e a resposta fecham quando a função termina. trust_env=False desativa a integração de ambiente do Requests, impedindo que definições de proxy herdadas substituam o comportamento pretendido deste cliente, e também desativa a seleção de pacote CA baseada no ambiente do Requests. Forneça o pacote CA pretendido através da opção verify deste cliente, se necessário.

As variáveis de ambiente configuradas para um ambiente Airflow gerido têm um âmbito mais amplo e restrições definidas pela plataforma. Passar a rota a esta Session mantém a decisão ligada à operação HTTP desta tarefa sem alterar os.environ para outro código no processo worker.

Artigos relacionados