# DummyOperator

DummyOperator 는 아무 실행도 하지 않는 Operator입니다. 간혹 Task 간 의존성 흐름 내 필요한 경우에 사용됩니다.

# Graph View

다음과 같은 Task 의존성을 가지는 DAG을 작성해봅시다.

img.png

  • 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

# Web UI

다음처럼 잘 실행된 것을 로그를 통해 확인할 수 있습니다.

img_1.png

DummyOperator Task Instance는 어떤 로그도 출력하지 않았습니다.

img_2.png

Last Updated: 3/1/2022, 1:26:42 PM