Summary
- Task 데코레이터는 Python 데코레이터의 기능을 airflow task로 활용한다.
- Airflow 공식 문서에서도 PythonOperator보다 task decorator 활용을 권장한다.
from airflow.decorators import task를 통해 사용한다.
Python 데코레이터
Python 데코레이터란 원래의 함수를 감싸(wrapping) 바깥에 추가 기능을 덧붙이는 것이다. 함수를 직접 수정하지 않고 wrapping 함수로 변경을 최소화할 수 있다.
def outer_func(target_func):
def inner_func():
print('target 함수 실행 전')
target_func()
print('target 함수 실행 후')
return inner_func()
# Decorator 활용
@outer_func
def get_data():
print('함수 실행')
get_data()Task 데코레이터
PythonOperator vs Task Decorator 비교
PythonOperator 활용
from airflow.operators.python import PythonOperator
def python_func():
...
py_task_1 = PythonOperator(
task_id='py_task_1',
python_callable=python_func
)Task decorator 활용 (코드 단축)
from airflow.decorators import task
@task(task_id='py_task_1')
def python_func():
...
py_task_1 = python_func()Reference