TriggerDagRun

yoon__0_0·2024년 6월 18일
0

이어드림 수업

목록 보기
72/103
  • Airflow를 사용하다보면 DAG간의 선후행 관계를 설정해야 하는 경우가 많이 생김
  • DAG간 의존 관계 설정 방법은 크게 3가지 존재함
    • TriggerDagRun 오퍼레이터
    • External Sensor
    • dataset

1) TrigerDagRun 오퍼레이터 방식 = push 방식

2) External 센서방식 = poll 방식


TrigerDagRun operator

공식문서

여러 파라미터값들이 존재함

  • trigger dag id 가 필수값

소스 코드

  • start_task가 실행되면, 그 후 dags_python_operator의 이름을 가진 dag을 실행시켜주도록 해라
  • reset_dag_run : 이미 run id 가 있어도 실행될거니?
  • wait for comletion :
from airflow import DAG
from airflow.operators.bash import BashOperator
from airflow.operators.trigger_dagrun import TriggerDagRunOperator
import pendulum

with DAG(
    dag_id='dags_trigger_dag_run_operator',
    start_date=pendulum.datetime(2024,6,17, tz='Asia/Seoul'),
    schedule='30 9 * * *',
    catchup=False
) as dag:

    start_task = BashOperator(
        task_id='start_task',
        bash_command='echo "start!"',
    )

    trigger_dag_task = TriggerDagRunOperator(
        task_id='trigger_dag_task',
        trigger_dag_id='dags_python_operator',
        trigger_run_id=None,
        logical_date=None,
        reset_dag_run=True,
        wait_for_completion=False,
        poke_interval=60,
        allowed_states=['success'],
        failed_states=None
        )

    start_task >> trigger_dag_task

DAG Run ID

  • Dag 실행시 해당 DAG이 실행된 방식과 스케줄을 구분할수 있는 유일 키
  • {실행방식}_{data_interval_start}형식을 가짐
  • 실행방식은 Scheduled/Manual/Backfill 중 하나
  • 같은 시점에 대해 실행되었다 하더라도 스케줄에 의해 실행됫냐, 수작업으로 실행됬냐에 따라 RUN ID 는 구분됨.
  • trigger operator로 실행 되더라고 manual 로 구분됨
profile
신윤재입니다

0개의 댓글