Python 访问通过CLI传递给Airflow的配置参数
我试图在触发dag运行时将以下配置参数传递给Airflow CLI。下面是我正在使用的trigger_dag命令Python 访问通过CLI传递给Airflow的配置参数,python,airflow,Python,Airflow,我试图在触发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运行中在操作员内部传递的con参数。有两种方法可以访问在气流触发_dag命令中传递的参数 在PythonOperator中定义的可调用方法中
airflow trigger_dag -c '{"account_list":"[1,2,3,4,5]", "start_date":"2016-04-25"}' insights_assembly_9900
我的问题是如何访问在dag运行中在操作员内部传递的con参数。有两种方法可以访问在
气流触发_dag
命令中传递的参数
kwargs['dag\u run'].conf.get('account\u list')
{{dag_run.conf['account_list']}
对于上述工作方法,外部可触发DAG的
schedule\u interval
设置为None
,这可能是devj
提供的答案的延续
afflow.cfg
中,应将以下属性设置为true:
dag\u run\u conf\u overrides\u params=True
provide\u context=True
。例如:我发现讨论很有帮助。如果您试图访问气流系统范围的配置(而不是DAG配置),以下内容可能会有所帮助: 首先,输入这个
from airflow.configuration import conf
第二,从某个地方获得价值
conf.get("core", "my_key")
如果可能,请使用设置一个值
conf.set("core", "my_key", "my_val")
是否有一种方法可以从
中使用dag()作为dag:
块访问dag\u run
?我想根据conf
键是否存在,将params
值解析为任务,如果不存在,则使用default\u arg
值(而不是将太多逻辑放入jinja模板本身)。可能conf=dag.get\u dagrun(execution\u date=dag.latest\u execution\u date)。conf
@yee379 No;在Dag文件中,您正在定义Dag,但运行仅在计划或触发Dag后才存在。类似于定义了任务,但任务实例仅在运行期间存在。每次运行时不要动态更改dag结构。取而代之的是,根据条件做出不执行操作或跳过的任务。这是一个完全不同的配置,与DAG运行配置无关。我认为问题中的区别不是那么清楚。这仍然帮助了我!ThanksI收到错误dag_run not fount on Airflow Server如何循环作为参数传递的帐户列表?
from airflow.configuration import conf
conf.get("core", "my_key")
conf.set("core", "my_key", "my_val")