Airflow将模板语言包含在任务实例 DAG 配置表达式中,以便在运行时处理该表达式并呈现结果。这个处理过程在调度器和工作流程程序之间进行交互,并根据每个任务实例的上下文进行执行。
具体而言,Airflow使用Jinja2模板引擎来处理模板语言。表达式中的变量被解释为Jinja2上下文中的键,并被替换为相应的值。Jinja2模板还支持过滤器来转换变量的值或执行操作。Jinja2的文档提供了有关可用过滤器和其他常用Jinja2模板语言特性的详细信息。
以下是Airflow使用Jinja2模板引擎呈现模板值的代码示例:
from jinja2 import Template
from datetime import datetime
# A sample template to be rendered
template_str = "{{ ds }}"
# Create a Jinja2 template object
template = Template(template_str)
# Define a context containing variable values
context = {
"ds": datetime(2021, 7, 1),
"yesterday_ds": datetime(2021, 6, 30)
}
# Render the template with the given context
rendered_template = template.render(context)
print(rendered_template) # Output: "2021-07-01"