【问题标题】:How to pass DAG run date to the tasks?如何将 DAG 运行日期传递给任务?
【发布时间】:2020-04-17 23:14:30
【问题描述】:

我是气流新手,想弄清楚如何将 DAG 运行日期传递给每个任务,我的 DAG 中有这个:

tzinfo=tz.gettz('America/Los_Angeles')
dag_run_date = datetime.now(_tzinfo)

dag = DAG(
    'myDag', 
    default_args=default_args,
    schedule_interval = None,
    params = {
        "runDateTimeTz" : dag_run_date.strftime("%Y-%m-%dT%H:%M:%S.%f%z")
    }
)

然后我尝试将 runDateTimeTz 参数传递给我的每个任务,就像这样..

task1 = GKEPodOperator(
    image='gcr.io/myJar:1.0.1.45',           
    cmds=['java'],
    arguments=["-jar","myJar.jar", {{params.runDateTimeTz}}"],
    dag=dag)

task2 = GKEPodOperator(
    image='gcr.io/myJar2:1.0.1.45',           
    cmds=['java'],
    arguments=["-jar","myJar2.jar", {{params.runDateTimeTz}}"],
    dag=dag)

我的任务已正确执行,但我希望它们都在 params.runDateTimeTz 中收到相同的运行日期,但它没有发生,例如 task1 得到 params.runDateTimeTz=2020-04-16T07:42:47.412716-07:00 而 task2 得到 params.runDateTimeTz= 2020-04-16T07:43:29.913289-07:00

我想这种行为与气流填充 DAG 的 params 的方式有关,看起来 params.runDateTimeTz 仅在任务开始运行时才获得,但我想在之前获得它并将其发送到每个任务作为一个参数,期望所有任务都获得相同的值。

有人可以帮助我解决我做错了什么吗?

【问题讨论】:

    标签: airflow directed-acyclic-graphs


    【解决方案1】:

    您可以使用 Airflow Macros 中的 execution_dateds

    详情:https://airflow.apache.org/docs/stable/macros-ref#default-variables

    task1 = GKEPodOperator(
        image='gcr.io/myJar:1.0.1.45',           
        cmds=['java'],
        arguments=["-jar","myJar.jar", "{{ ds }}"],
        dag=dag)
    
    task2 = GKEPodOperator(
        image='gcr.io/myJar2:1.0.1.45',           
        cmds=['java'],
        arguments=["-jar","myJar2.jar", "{{ ds }}"],
        dag=dag)
    

    如果您需要时间戳,可以使用{{ ts }}

    【讨论】:

    • 我不确定 execution_date 是否是我需要的。根据airflow documentation execution_date 是 DAG 运行的逻辑日期和时间 我想要的实际运行日期。我不清楚这里的逻辑日期是什么意思。
    • execution_date 是 Dag 运行的实际日期。
    • 您知道是否有办法在将 execution_date 的默认时区发送到任务之前更改它?我不想使用默认的 UTC 发送它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2020-10-26
    • 2021-09-23
    相关资源
    最近更新 更多