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

在Composer DAG传递参数时遭遇AirflowException报错求助

解决Airflow Composer中PythonOperator的python_callable param must be callable错误

错误原因

PythonOperator的python_callable参数要求传入可调用的函数对象,但你直接写了脚本名py_script,既没有正确导入目标脚本中的函数,也没有指定要执行的具体函数(你的脚本里定义的是main函数),因此触发该异常。

修复步骤

1. 正确导入目标脚本中的函数

你的Python脚本位于/dir/folder/py_script.py,需在DAG文件中导入该脚本里的main函数,可通过两种方式实现:

方式一:手动添加脚本目录到Python路径

在DAG代码开头添加以下内容,将脚本所在目录加入Python的搜索路径:

import sys
sys.path.append('/dir/folder')
from py_script import main

方式二:利用Airflow配置的PYTHONPATH

如果/dir/folder已经配置在Airflow的PYTHONPATH环境变量中(Composer可通过环境变量配置),则直接导入即可:

from py_script import main

2. 修改PythonOperator配置

将python_callable的值从py_script改为导入的main函数,同时修正schedule_interval的错误写法(需用Python的None而非字符串'None'),最终DAG代码如下:

from datetime import datetime
import models
import python_operator
import sys
sys.path.append('/dir/folder')
from py_script import main

default_dag_args = {    
    'start_date': datetime(2023, 1, 1),
    'catchup': False,
    'retries': 0,    
}

with models.DAG(
        'test',
        schedule_interval=None,
        default_args=default_dag_args) as dag:
   
    t1 = python_operator.PythonOperator(
        task_id='t1_task',
        python_callable=main,  
        op_kwargs={'PARAM1':'TEST', 'FILE':'gs://bucket/file.xlsx'},
        dag=dag
    )   

    t1

额外注意事项

  • 确保/dir/folder目录在Composer环境中可访问,若脚本存放在GCS,需挂载到Composer worker节点;若放在DAG目录的子文件夹中,无需手动添加sys.path。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:32:19