김초송 2023. 6. 22. 17:48

op_args

  • python operator 로 함수를 호출할 때 넘겨받는 인자들
    = op_args의 값
python_task = PythonOperator(
    task_id='python_task', 
    python_callable=regist, 
    op_args=[‘name’,’sex’]
)

파이썬 오퍼레이터 op_args 사용

  1. 함수에 일반 변수만 있을 경우
  2. 일반 변수 + *args
  3. *args 만 있을 경우
  4. 일반 + *args + **kwargs

 

일반 변수 + *args + **kwargs

plugins/common/common_func.py

def regist2(name, sex, *args, **kwargs):
    print(f'이름 : {name}')
    print(f'성별 : {sex}')
    print(f'기타 : {args}')
    email = kwargs['email'] or None
    phone = kwargs['phone'] or None
    
    if email : print(email)
    if phone : print(phone)

dags/dags_python_with_op_kwagrs.py

from airflow import DAG
from airflow.operators.python import PythonOperator
from common.common_func import regist2

import pendulum

with DAG(
    dag_id="dags_python_with_op_kwargs",
    schedule="30 6 * * *",
    start_date=pendulum.datetime(2023, 6, 1, tz="Asia/Seoul"),
    catchup=False
) as dag:
    
    regist2_t1 = PythonOperator(
        task_id='regist2_t1',
        python_callable=regist2,
        op_args=['name', 'sex', 'country', 'city']
        op_kwargs={'email':'@gmail.com', 'phone':'010-2345-9876'}
    )