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

EC2上Airflow守护进程模式运行时出现导入错误求助

Airflow守护进程模式运行时无法读取YAML配置文件的问题

在EC2实例上运行Airflow时,前台启动webserver和scheduler可正常读取自定义YAML配置文件,但通过-D参数以守护进程模式运行时,出现文件读取/导入错误。ETL任务需读取_credentials/global_config.yml获取API密钥,前台运行无问题,守护进程模式下报错。

相关代码片段(etl.py)

import yaml

with open("_credentials/global_config.yml", "r") as filename:
        global_config = yaml.load(filename, Loader=yaml.FullLoader)

def extract_data():
    #  YAML contains API credentials under 'api_key'
    api_key = global_config.get('api_key')
    
    # Further using api_key to call API

def transform_data(raw_data):
    pass

def load_data(transformed_data):
    pass

目录结构

airflow_pipelines
    |-- airflow/
            |-- _credentials/
                     global_config.yml
            |-- tasks/
                |-- etl.py
            |-- dags/
                |-- group_of_dags_1/
                |-- group_of_dags_2/

解决方案

1. 使用绝对路径读取配置文件

守护进程启动时的工作目录(CWD)通常与前台运行时不同,相对路径会失效。通过__file__动态生成配置文件的绝对路径:

import yaml
import os

# 获取当前脚本所在目录的上级目录(即airflow/根目录)
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
config_path = os.path.join(base_dir, "_credentials", "global_config.yml")

with open(config_path, "r") as filename:
    global_config = yaml.load(filename, Loader=yaml.FullLoader)

2. 切换工作目录后启动守护进程

在启动Airflow守护进程前,先切换到airflow/目录,确保相对路径有效:

cd /path/to/airflow_pipelines/airflow && airflow webserver -D
cd /path/to/airflow_pipelines/airflow && airflow scheduler -D

3. 验证配置文件权限

确保守护进程运行用户拥有global_config.yml的读取权限:

# 检查文件权限
ls -l airflow/_credentials/global_config.yml
# 赋予其他用户读取权限(按需调整)
chmod o+r airflow/_credentials/global_config.yml
# 或调整文件所属组为进程运行用户组
chgrp [airflow_user_group] airflow/_credentials/global_config.yml

4. 配置Airflow的HOME路径

在airflow.cfg中指定airflow_home为airflow_pipelines/airflow/,统一所有组件的基准路径:

[core]
airflow_home = /path/to/airflow_pipelines/airflow

修改后重启Airflow守护进程。

内容的提问来源于stack exchange,提问作者Jay Pathar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:57:45