【问题标题】:My DAG config/params aren't being passed to my task我的 DAG 配置/参数未传递给我的任务
【发布时间】:2022-06-15 23:25:56
【问题描述】:

我以与these Airflow docs 非常相似的方式将一些运行时 DAG 参数/配置传递给 PythonOperator

def print_x(x):
    print(f"x is {x}")


with DAG(
    "print_x",
    start_date=pendulum.datetime(2022, 6, 15, tz="UTC"),
    schedule_interval=None,
    catchup=False,
    params={
        "x": Param(42),
    },
) as dag:
    PythonOperator(
        task_id="print_x",
        op_kwargs={
            "x": "{{ params.x }}",
        },
        python_callable=print_x,
    )

但是当我手动触发 DAG 时,无论我在“触发 DAG”对话框中输入了什么,我总是得到默认值 (42)。

这里出了什么问题?

注意:在我的特殊情况下,我在 AWS Managed Workflows for Apache Airflow (MWAA) 上运行 Airflow 2.2.2,但我认为这不相关。

【问题讨论】:

    标签: airflow airflow-2.x


    【解决方案1】:

    有一个little discussed param 控制在触发 DAG 时传递的配置是否用于 DagRun 的任务:

    Params concepts page 的底部写着(重点是我的):

    在触发 DAG 时更新参数的能力取决于标志 core.dag_run_conf_overrides_params。 将此配置设置为 False 将有效地将您的默认参数转换为常量。

    在 MWAA 上,这似乎默认设置为 False。您可以通过“触发 DAG”页面底部的消息来查看是否是问题所在:

    由于core.dag_run_conf_overrides_params 设置为False,因此在此处传递任何配置都不会覆盖任务参数。

    【讨论】:

      猜你喜欢
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多