Для задачы 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 або іншую канфігурацыю ўліковага запісу трымайце ў прызначанай для разгортвання крыніцы сакрэтаў.

Session і адказ закрываюцца пасля завяршэння функцыі. trust_env=False адключае інтэграцыю Requests з асяроддзем, што не дазваляе ўспадкаваным наладам проксі замяніць жаданыя паводзіны гэтага кліента, а таксама адключае выбар CA bundle у Requests на аснове асяроддзя. Пры неабходнасці перадайце патрэбны CA bundle праз опцыю verify гэтага кліента.

Пераменныя асяроддзя, наладжаныя для кіраванага асяроддзя Airflow, маюць шырэйшы абсяг і абмежаванні, вызначаныя платформай. Калі перадаць маршрут гэтаму Session, рашэнне застаецца прывязаным да HTTP-аперацыі гэтай задачы, не змяняючы os.environ для іншага кода ў працэсе worker.

Падобныя артыкулы