컨테이너·워크플로우 자동화/Airflow로 워크플로우 자동화하기

Airflow Sensor의 soft_fail 이해하기

Data Jun 2025. 10. 18. 10:33

Airflow에서 Sensor는 특정 조건이 충족될 때까지 DAG 실행을 일시 중지(polling) 하는 역할을 합니다.
예를 들어, 파일이 생기거나, 외부 태스크가 완료될 때까지 기다리도록 설정할 수 있죠.

 

하지만 항상 센서 실패(Fail)를 DAG 전체 실패로 처리하고 싶지는 않을 때가 있습니다.
이럴 때 사용하는 옵션이 바로 👉 soft_fail 입니다.

 

soft_fail의 역할

soft_fail=True로 설정하면, Sensor가 실패해도 DAG 전체가 실패하지 않습니다.

대신 해당 Sensor 태스크만 SKIPPED 상태로 처리됩니다.

즉,

  • 파일이 안 생겨도 DAG을 완전히 멈추지 않고,
  • 이후 분기 로직에 따라 다른 작업을 계속 진행할 수 있습니다.

 

예시 코드

wait_for_file = PythonSensor(
    task_id='wait_for_file',
    python_callable=check_file_exists,
    timeout=600,          # 최대 10분간 대기
    poke_interval=30,     # 30초마다 파일 확인
    soft_fail=True,       # 실패 시 skip 처리
    dag=dag,
)

 

 

실제 활용 예시

예를 들어, 매일 아침 데이터 파일이 들어올 때만 처리하는 DAG이 있다고 합시다.
그날 파일이 없으면 DAG 전체가 실패하는 대신, 그냥 건너뛰고 싶다면 이렇게 설정합니다 👇

from airflow.sensors.filesystem import FileSensor

wait_for_data = FileSensor(
    task_id='wait_for_data',
    filepath='/data/input/today.csv',
    timeout=600,
    poke_interval=60,
    soft_fail=True,  # 파일이 없으면 skip
    dag=dag,
)

 

  • 파일이 존재하면 → 다음 태스크 실행
  • 파일이 없으면 → skip 처리 (DAG 실패 X)

 

정리하면

 

soft_fail은 단순하지만 강력한 옵션입니다.
필수 조건이 아닌 “있으면 좋고, 없어도 괜찮은” 센서 조건에 활용하면,
Airflow DAG을 훨씬 유연하고 안정적으로 운영할 수 있습니다.

soft_fail=True → “센서 실패는 오류가 아니라, 건너뛰는 상황이다.”