我试图在触发dag运行时将以下配置参数传递给Airflow CLI。以下是我正在使用的trigger_dag命令。
airflow trigger_dag -c '{"account_list":"[1,2,3,4,5]", "start_date":"2016-04-25"}' insights_assembly_9900
我的问题是如何在dag run中访问运算符内传递的con参数。
答案 0 :(得分:7)
有两种方法可以访问airflow trigger_dag
命令中传递的参数。
在PythonOperator中定义的可调用方法中,可以访问参数kwargs['dag_run'].conf.get('account_list')
鉴于您使用此字段的字段是可模板字段,可以使用{{ dag_run.conf['account_list'] }}
对于上述工作方法,外部可触发DAG的schedule_interval
设置为None
答案 1 :(得分:5)
这可能是devj
提供的答案的延续。
在airflow.cfg
,应将以下属性设置为true:
dag_run_conf_overrides_params=True
在定义PythonOperator时,传递以下参数provide_context=True
。例如:
get_row_count_operator = PythonOperator(task_id='get_row_count', python_callable=do_work, dag=dag, provide_context=True)
**kwargs
):def do_work(**kwargs): table_name = kwargs['dag_run'].conf.get('table_name') # Rest of the code
airflow trigger_dag read_hive --conf '{"table_name":"my_table_name"}'
我发现this的讨论会有所帮助。
答案 2 :(得分:0)
首先,将其导入到某个地方
from airflow.configuration import conf
conf.set("core", "my_key", "my_val")
其次,在某处获取值
conf.get("core", "my_key")