我有一个包含三个 bash 任务的 DAG,计划每天运行。
我想在所有 bash 脚本中访问 dag 实例的唯一 ID(可能是 PID)。
有没有办法做到这一点?
我正在寻找与 Oozie 类似的功能,我们可以在工作流 xml 或 java 代码中访问 WORKFLOW_ID。
有人可以指点我有关“如何在 AirFlow DAG 中使用内置变量和自定义变量”的 AirFlow 文档吗
非常感谢帕里
可以在 jinja2 中使用点符号访问对象的属性(请参阅https://airflow.apache.org/code.html#macros)。在这种情况下,它只是:
{{ dag.dag_id }}
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( '>', '' ) }}
"""
)