Python 访问通过CLI传递给Airflow的配置参数

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中定义的可调用方法中

我试图在触发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中定义的可调用方法中,可以通过
    kwargs['dag\u run'].conf.get('account\u list')

  • 如果您使用的字段是Templateable字段,则可以使用
    {{dag_run.conf['account_list']}


  • 对于上述工作方法,外部可触发DAG的
    schedule\u interval
    设置为
    None
    ,这可能是
    devj
    提供的答案的延续

  • afflow.cfg
    中,应将以下属性设置为true:
    dag\u run\u conf\u overrides\u params=True

  • 定义PythonOperator时,传递以下参数
    provide\u context=True
    。例如:

  • 从命令行调用dag:
  • 气流触发器读取配置单元--conf'{“表名”:“我的表名”}
    我发现讨论很有帮助。

    如果您试图访问气流系统范围的配置(而不是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")