요약
- airflow 내 args 결과는
set
형태로 반환PythonOperator
의op_args
,op_kwargs
매개변수 활용op_args
는 list로 작성op_kwargs
는 dictionary로 작성
1. op_args 파라미터
op_args
는 List로 작성되며, 함수 호출 시 파라미터로 입력됨
1) Only 일반 변수
def regist(name, sex):
print(f'이름은 {name}이고 성별은 {sex}입니다')
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_args = ['hyun','male']
)
2)일반 변수 + args
- 필수 파라미터 외 변수가
args
객체로 캡쳐됨
def regist(name, sex, *args):
print(name)
print(sex)
print(args)
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_args = ['hyun','male', 'kr', 'seoul']
)
3) Only args
- 모든 변수가
args
객체로 캡쳐됨
def regist(*args):
print(args)
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_args = ['hjkim','male','kr','seoul']
)
2. op_kwargs로 변수 할당
op_kwargs
는 dictionary로 작성되며, 함수 호출 시 파라미터로 들어감. 또한, Key값에 해당하는 Value값이 캡쳐됨
1) Only 일반 변수
def regist(name, sex):
print(f'이름은 {name}이고 성별은 {sex}입니다')
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_kwargs = {'name':'hyun', 'sex':'male'}
)
2) 일반 변수 + kwargs
- 필수 파라미터인 key값에 명시되지 않는 arguments는
kwargs
로 캡쳐됨
함수
def regist(name, sex, **kwargs):
print(name)
print(sex)
print(kwargs)
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_kwargs = {'name':'hyun', 'sex':'male',
'country':'kr','city':'seoul'}
)
3) Only kwargs
def regist(**kwargs):
name = kwargs['name'] or ''
sex = kwargs['sex'] or ''
country = kwargs['country'] or ''
city = kwargs['city'] or ''
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_kwargs = {'name':'hyun', 'sex':'male',
'country':'kr','city':'seoul'}
4) 일반 변수 + args + kwargs
- 명시된 변수는 해당 값이 캡쳐
- 그 외 dicitonary가 나오기 이전까지 남은 변수는
args
값이 캡쳐 - dicitonary는
kwargs
에 캡쳐
def regist(name, sex, *args, **kwargs):
python_task = PythonOperator(
task_id = 'python_task',
python_callable = regist,
op_args = ['hyun','male','kr','seoul']
op_kwargs = {'phone': 010, 'mail':'hyun@naver.com'}
)