본문 바로가기
기술스택을 쌓아보자/데이터 엔지니어링

[Airflow] TASK

by 소리331 2024. 10. 12.
반응형

task의 종류 3가지

Operator(작업자), Sensors(이벤트감지), TaskFlow-decorated(custom python function)

Relationships

# 방법1
second_task >> [third_task, fourth_task]
# 방법2
first_task.set_downstream(second_task)
third_task.set_upstream(second_task)

- 태스크에서 태스크간 정보를 전달하는 데에는 Xcom을 사용함.

Task Instances

- task states의 종류는 이미지 참조. (보통 none -> scheduled -> queued -> running -> success ) 
- task states는 xcom을 통해 다음 method로도 넘어감

Relationship Terminology

- upstream and downstream

Timeouts

- operator: execution_timeout (datetime.timedelta) => AirflowTaskTimeout
- sensor : timeout => reschedule => AirflowSensorTimeout
- vs SLAs: timeout은 시간이 초과되면 에러가 되고, SLA는 시간이 초과되면 알람이 오고, task가 그대로 진행된다 ( 단순 연장)

SLAs

- SLA Misses 가 발생하는 경우 이메일로 알람 발송 
- sla 파라미터로 datetime.timedelta를 입력, => 이메일 발송,
- sla_miss_callback을 통한 custom도 가능 
- 수동 trigger는 sla miss를 허용하지 않음

sla_miss_callback

- 파라미터 : dag, task_list, blocking_task_list, slas, blocking_tis 을 인자로 받는 함수를 만들어 넘길 수 있다. 

Special Exceptions

아래 exception들을 추가하면 기존 job에서 특정 조건에 대해 빠르게 에러 처리를 진행할 수 있음.
- AirflowSkipException: 현재 task를 skipped로 설정 
- AirflowFailException: 현재를 실패로 표현하고 이후 task들을 실행하지 않음.

Zombie/Undead Tasks

airflow가 task의 상태를 감지하는 방식 
- Zombie tasks: 비활성 상태임에도 불구하고 실행 중인 상태로 멈춰 있는 작업 인스턴스
    - 주로 worker의 oom, 재시작, scale 변경 
- Undead tasks: 실행되면 안되는데 실행되는 task

 

출처:

 

Tasks — Airflow Documentation

 

airflow.apache.org

 

반응형

댓글