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 → “센서 실패는 오류가 아니라, 건너뛰는 상황이다.”
'컨테이너·워크플로우 자동화 > Airflow로 워크플로우 자동화하기' 카테고리의 다른 글
| BranchOperator vs BranchPythonOperator 비교 (0) | 2025.10.18 |
|---|---|
| Airflow BranchOperator로 조건 분기 처리하기 (0) | 2025.10.18 |
| Airflow Sensor 실습 — PythonSensor로 파일 확인 (0) | 2025.10.18 |
| Airflow XCom과 ShortCircuitOperator 이해하기 (0) | 2025.10.18 |
| Airflow ShortCircuitOperator — 조건에 따라 Task 실행 제어하기 (0) | 2025.10.18 |