Skip to content

센서·실행 컨텍스트 (Sensors & Run Context)

DAG 의 태스크가 특정 조건이 될 때까지 기다리거나, 어떤 run 에서 실행 중인지 알아야 할 때 센서(Sensor)실행 컨텍스트(Run Context) 를 씁니다. 데이터스케쳐스 실무 관점에서 정리합니다.

센서 (Sensors)

센서는 조건(파일 도착, 분할 완료, API 준비)이 참이 될 때까지 폴링하며 대기하는 오퍼레이터입니다.

  • FileSensor: 특정 경로에 파일이 생길 때까지 대기.
  • ExternalTaskSensor: 다른 DAG 의 태스크 완료를 기다림.
  • HttpSensor: 주기적으로 HTTP 응답(상태코드 200 등)을 확인.
from airflow.sensors.filesystem import FileSensor
wait = FileSensor(task_id="wait_file", filepath="/data/events/latest.csv", poke_interval=30, timeout=3600)
  • 주의: 센서는 자원을 물고 폴링하므로 poke_interval(재시도 간격)과 timeout(최대 대기)을 반드시 지정하세요.

실행 컨텍스트 (Run Context)

태스크가 자기 실행 정보(DAG run 시간, 실행 날짜, 태스크 인스턴스 등)를 알아야 할 때 **context 로 받습니다.

def run(**context):
    ds = context["ds"]            # 실행 날짜 (YYYY-MM-DD)
    ti = context["ti"]            # TaskInstance
    ts = context["ts"]            # 실행 시각
  • DAG run 만들기: TriggerDagRunOperator 로 다른 DAG 을 데이터 파라미터와 함께 트리거할 수 있습니다.

데이터스케쳐스 실무 관점

  • 이벤트 데이터 파이프라인: 새 이벤트 파일 도착까지 FileSensor 로 대기 후 적재.
  • 배치 파라미터: DAG run 가 실행 날짜/테넌트를 컨텍스트로 받아 파티션을 정확히 지정.
  • 센서 폴링은 클러스터 부하를 주므로 간격을 넉넉히(timeout 과 함께) 잡으세요.

확인 필요

  • 센서·컨텍스트 필드 세부는 Airflow 버전마다 다르므로, 사용 버전 공식 문서를 재확인하세요. (확인 필요)

더 알아보기