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