在Airflow中,可以通过使用Jinja2模板语言将变量动态地插入到HTML中。下面的代码将演示如何使用Jinja2模板语言将log_url变量插入到HTML a标签的href属性中。
from airflow.operators.python_operator import PythonOperator
def test_log_url(**context):
log_url = context.get("task_instance").log_url
html = "Click here to see logs"
return html
task = PythonOperator(
task_id="test_log_url",
python_callable=test_log_url,
provide_context=True,
dag=dag
)
在上述代码中,我们使用provide_context=True获取DAG上下文中的变量,并将其传递到test_log_url函数中。在test_log_url函数内部,我们使用context.get()方法获取log_url变量,并使用Jinja2模板语言将其插入到HTML“href”属性中。最后,我们将HTML字符串返回给PythonOperator任务,并将其用作任务的输出。
在DAG中,您需要将此任务添加为一个依赖于其他任务的任务。在任务的输出中,您可以查看生成的HTML代码,该代码包含log_url作为a标签的href属性。