我从 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。
请您参考如下方法:
它们不是单独的实例。你可以看到这个:
在 TreeView 中,两个圆圈的开始/结束日期和持续时间将完全相同。
在甘特图 View 中,您只会看到单个
print_date实例的持续时间。
一般来说,如果不像他们所做的那样复制节点,就无法将 DAG 映射到 TreeView 。
