Skip to main content
 首页 » 编程设计

python之了解 apache Airflow 中的 TreeView

2024年08月19日36zhengyun_ustc

我从 https://airflow.apache.org/tutorial.html 设置了 dag照原样,唯一的变化是我将 dag 设置为以 5 分钟的间隔运行,开始日期为 2017-12-17 T13:40:00 UTC。我在 13:40 之前启用了 dag,所以没有回填,我的机器在 UTC 上运行。 dag 按预期运行(即从 13:45 UTC 开始每隔 5 分钟运行一次)

现在,当我转到 TreeView 时,我无法理解图表。一共有3个任务。 'sleep'(t2) 的上游设置为'printdate' (t1),'templated'(t3) 的上游也设置为'printdate'(t1)。那为什么图表显示两个“打印日期”?它们是该任务的独立任务实例吗?如果是,那么如何确保只有 1 个 t1 任务实例运行(菱形模式)。还有 4 个绿色矩形框(带有两个“打印日期”),而不是 3 个。

# t1, t2 and t3 are examples of tasks created by instantiating operators 
t1 = BashOperator( 
    task_id='print_date', 
    bash_command='date', 
    dag=dag) 
 
t2 = BashOperator( 
    task_id='sleep', 
    bash_command='sleep 5', 
    retries=3, 
    dag=dag) 
 
templated_command = """ 
    {% for i in range(5) %} 
        echo "{{ ds }}" 
        echo "{{ macros.ds_add(ds, 7)}}" 
        echo "{{ params.my_param }}" 
    {% endfor %} 
""" 
 
t3 = BashOperator( 
    task_id='templated', 
    bash_command=templated_command, 
    params={'my_param': 'Parameter I passed in'}, 
    dag=dag) 
 
t2.set_upstream(t1) 
t3.set_upstream(t1) 

其次,为什么 dag 上方的时间运行(绿色圆圈),显示 8.40、8.45 - ?那是什么时间/时区?我已将 dag 的开始日期设置为 13.40,我的机器设置为 UTC。

请您参考如下方法:

它们不是单独的实例。你可以看到这个:

  1. 在 TreeView 中,两个圆圈的开始/结束日期和持续时间将完全相同。

  2. 在甘特图 View 中,您只会看到单个 print_date 实例的持续时间。

一般来说,如果不像他们所做的那样复制节点,就无法将 DAG 映射到 TreeView 。