You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Apache Airflow中运行DAG时如何设置代理环境变量?

Apache Airflow CeleryExecutor 全局代理变量配置方案

核心问题

CeleryExecutor模式下,DAG任务运行在Celery Worker进程中,该进程不会自动继承系统/etc/profile中的环境变量,且非AIRFLOW前缀的变量无法通过常规Airflow配置直接传递。

可行解决方案

方法1:修改Celery Worker的Systemd服务配置

如果用Systemd管理Airflow Worker服务:

  1. 编辑Worker的Systemd服务文件(通常路径为/etc/systemd/system/airflow-worker.service)
  2. 在[Service]区块添加代理环境变量:
    Environment="http_proxy=http://your-proxy-addr:port"
    Environment="https_proxy=http://your-proxy-addr:port"
    Environment="no_proxy=localhost,127.0.0.1,internal-service-ip,internal-domain.com"
    
  3. 重载Systemd配置并重启Worker:
    sudo systemctl daemon-reload
    sudo systemctl restart airflow-worker
    

方法2:通过Airflow配置文件传递变量

Airflow 2.x支持在airflow.cfg中为Celery Worker指定环境变量:

  1. 打开airflow.cfg,定位到[celery]段落
  2. 添加env_vars配置项,填入代理变量:
    env_vars = http_proxy=http://your-proxy-addr:port,https_proxy=http://your-proxy-addr:port,no_proxy=localhost,127.0.0.1
    
  3. 重启Airflow Scheduler和Worker服务

方法3:手动启动Worker时注入变量

若手动启动Celery Worker,可在启动命令前直接指定环境变量:

http_proxy=http://your-proxy-addr:port https_proxy=http://your-proxy-addr:port no_proxy=localhost,127.0.0.1 airflow celery worker

也可将变量写入专属配置文件(如/etc/sysconfig/airflow-worker),让启动脚本自动加载该文件。

验证配置

创建测试DAG确认变量生效:

from airflow import DAG
from airflow.operators.python import PythonOperator
import os
from datetime import datetime

def verify_proxy():
    print(f"http_proxy: {os.environ.get('http_proxy')}")
    print(f"https_proxy: {os.environ.get('https_proxy')}")
    print(f"no_proxy: {os.environ.get('no_proxy')}")

with DAG(
    'verify_proxy_env',
    start_date=datetime(2024, 1, 1),
    schedule_interval=None,
    catchup=False
) as dag:
    check_task = PythonOperator(
        task_id='check_proxy_vars',
        python_callable=verify_proxy
    )

内容的提问来源于stack exchange,提问作者Miguel Santana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:50:27