Прокси Requests на уровне задачи в Google Cloud Composer
Создайте сессию Requests на уровне задачи с явным маршрутом, вместо того чтобы менять прокси-окружение общего процесса worker.
Если задаче Cloud Composer нужен один исходящий HTTP-запрос через прокси, настройте HTTP-клиент внутри callable задачи:
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
Вызывайте этот callable через существующую схему задач DAG. Прокси должен быть доступен с worker, выполняющего задачу. Для разрешённых вызовов публичных API без аутентификации на прокси список HTTP-прокси даёт кандидатов для HTTP-прокси URL сессии. Храните URL с аутентификацией или другую конфигурацию учётной записи в предусмотренном для развёртывания источнике секретов.
Сессия и ответ закрываются при выходе из функции. trust_env=False отключает интеграцию Requests с окружением, не позволяя унаследованным настройкам прокси заменить предполагаемое поведение этого клиента, а также отключает выбор CA-пакета в Requests на основе окружения. При необходимости передайте нужный CA-пакет через опцию verify этого клиента.
Переменные окружения, заданные для управляемой среды Airflow, имеют более широкую область действия и ограничения, определённые платформой. Передача маршрута этой сессии оставляет решение привязанным к HTTP-операции данной задачи и не меняет os.environ для другого кода в процессе worker.