# DummyOperator
DummyOperator
는 아무 실행도 하지 않는 Operator입니다. 간혹 Task 간 의존성 흐름 내 필요한 경우에 사용됩니다.
# Graph View
다음과 같은 Task 의존성을 가지는 DAG을 작성해봅시다.
first_task_0
~first_task_4
Task Instance는 병렬로 실행됩니다.- 이 중 하나가 먼저 성공했다고 하더라도 가운데
dummy
Task Instance가 이전의 모든 Task Instance가 성공되기를 기다리기 때문에,first_task_0
~first_task_4
가 모두 성공해야 그 다음second_task_0
~second_task_4
Task Instance를 한 번에 병렬로 실행하게 됩니다.
# Code
from datetime import datetime, timedelta
from time import sleep
from airflow import DAG
from airflow.operators.dummy import DummyOperator
from airflow.operators.python import PythonOperator
from pendulum.tz.timezone import Timezone
with DAG(
dag_id="04_dummy_operator",
description="DummyOperator를 사용하는 DAG 예제입니다.",
default_args={
"owner": "heumsi",
"retries": 1,
"retry_delay": timedelta(minutes=1),
},
start_date=datetime(2022, 1, 20, tzinfo=Timezone("Asia/Seoul")),
schedule_interval="@once",
tags=["examples", "04_using_various_operators"],
) as dag:
def dump() -> None:
sleep(3)
first_tasks = []
for i in range(5):
task = PythonOperator(task_id=f"first_task_{i}", python_callable=dump)
first_tasks.append(task)
task_2 = DummyOperator(task_id="dummy")
seconds_tasks = []
for i in range(5):
task = PythonOperator(task_id=f"second_task_{i}", python_callable=dump)
seconds_tasks.append(task)
first_tasks >> task_2 >> seconds_tasks
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Web UI
다음처럼 잘 실행된 것을 로그를 통해 확인할 수 있습니다.
DummyOperator
Task Instance는 어떤 로그도 출력하지 않았습니다.