3

我有一个包含三个 bash 任务的 DAG,计划每天运行。

我想在所有 bash 脚本中访问 dag 实例的唯一 ID(可能是 PID)。

有没有办法做到这一点?

我正在寻找与 Oozie 类似的功能,我们可以在工作流 xml 或 java 代码中访问 WORKFLOW_ID。

有人可以指点我有关“如何在 AirFlow DAG 中使用内置变量和自定义变量”的 AirFlow 文档吗

非常感谢帕里

4

2 回答 2

2

可以在 jinja2 中使用点符号访问对象的属性(请参阅https://airflow.apache.org/code.html#macros)。在这种情况下,它只是:

{{ dag.dag_id }}
于 2018-11-18T22:40:43.980 回答
0

dag我利用了 python 对象打印出当前 dag 的名称这一事实。所以我只是使用 jinja2 来更改dag名称:

{{ dag | replace( '<DAG: ', '' ) | replace( '>', '' ) }}

有点黑客,但它的工作原理。

所以,

clear_upstream = BashOperator( task_id='clear_upstream',
    trigger_rule='all_failed',
    bash_command="""
      echo airflow clear -t upstream_task -c -d -s {{ ts }} -e {{ ts }} {{ dag | replace( '<DAG: ', '' ) | replace( '>', '' ) }}
    """
)
于 2017-12-18T08:23:59.413 回答