[Airflow] Python Operator의 op_args, op_kwargs

2024. 7. 22. 15:49·Minding's Programming/Airflow
728x90
반응형

*args와 **kwargs의 개념 정리: [Python] 파이썬 함수 파라미터 *args와 **kwargs

 

op_args

 

파이썬 오퍼레이터를 사용해 파이썬 함수를 실행시킬 경우 해당 함수의 파라미터는 op_args를 통해 전달한다.

as dag:
    def regist(name, sex):
    print(f'이름은 {name}이고 성별은 {sex}입니다.')
    
py_task_1 = PythonOperator(
	task_id = 'py_task_1',
    python_callable=regist,
    op_args = ['minding', 'man'] # 리스트 형태로 작성
    
py_task_1 = PythonOperator( # *args가 있을 경우
	task_id = 'py_task_1',
    python_callable=regist,
    op_args = ['minding', 'man', 'abcd@naver.com'] # 리스트 형태로 작성

기본적으로 인자는 리스트 형태로 전달되며, *args가 있는 경우에도 그대로 리스트에 값을 추가해주면 된다.

 

task 데코레이터를 사용하는 경우 일반 함수 인자를 넣듯이 사용해도 된다.

with DAG(
    dag_id = 'dags_python_with_op_args',
    schedule = None,
    start_date = pendulum.datetime(2024, 7, 1, tz="Asia/Seoul"),
    catchup = False,
    tags=["practice"]
) as dag:

    py_task_1 = regist('minding', 'man', 'kr', 'seoul')

 

 

op_kwargs

as dag:
    def regist(name, sex, **kwargs):
    print(f'이름은 {name}이고 성별은 {sex}입니다.')
    print(kwargs)
    
py_task_1 = PythonOperator(
	task_id = 'py_task_1',
    python_callable=regist,
    op_kwargs = {'name':'minding', 'sex':'man'} # 딕셔너리 형태로 작성
    
py_task_1 = PythonOperator( # *kwargs가 있을 경우
	task_id = 'py_task_1',
    python_callable=regist,
    op_kwargs = {'name':'minding', 'sex':'man', 'country':'kr', 'email':'abc123@yahoo.co.kr'} # 딕셔너리 형태로 작성

기본적으로 인자는 딕셔너리 형태로 전달되며, *args가 있는 경우에도 그대로 딕셔너리에 값을 추가해주면 된다.

 

 

op_args와 op_kwargs 모두 사용하는 경우

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)
        
        
 with DAG(
    dag_id = 'dags_python_with_op_kwargs',
    schedule = None,
    start_date = pendulum.datetime(2024, 7, 1, tz="Asia/Seoul"),
    catchup = False,
    tags=["practice"]
) as dag:
    
    regist2_t1 = PythonOperator(
        task_id = 'regist2_t1',
        python_callable = regist2,
        op_args = ['minding', 'man', 'kr', 'seoul'],
        op_kwargs = {'email':'tlsfk48@gmail.com', 'phone':'01011112222'}
    )

    regist2_t1

op_args와 op_kwargs 모두 사용할 수 있다. op_args에 키 값이 필요없는 인자를 리스트 형태로 넣고, op_kwargs에 키 값이 필요한 인자들을 딕셔너리 형태로 넣어주면 된다.

728x90

'Minding's Programming > Airflow' 카테고리의 다른 글

[Airflow] Airflow의 날짜 개념  (0) 2024.07.23
[Python/Jinja/Airflow] Jinja 템플릿과 Airflow에서의 사용방법  (2) 2024.07.22
[Python] 파이썬 함수 파라미터 *args와 **kwargs  (0) 2024.07.22
[Airflow] Python Operator 사용과 Python Decorator  (0) 2024.07.22
[Airflow] Email 오퍼레이터 사용해보기 (Gmail 서버 사용)  (0) 2024.07.19
'Minding's Programming/Airflow' 카테고리의 다른 글
  • [Airflow] Airflow의 날짜 개념
  • [Python/Jinja/Airflow] Jinja 템플릿과 Airflow에서의 사용방법
  • [Python] 파이썬 함수 파라미터 *args와 **kwargs
  • [Airflow] Python Operator 사용과 Python Decorator
Minding
Minding
  • Minding
    Today's Minding
    Minding
  • 전체
    오늘
    어제
    • 울고넘는 딥러닝 (278)
      • Minding's Baseball (57)
        • MLB Statcast (29)
        • 머신러닝으로 홈런왕 예측하기 (3)
        • 야구칼럼 (12)
        • 야구 규칙, 용어 (1)
        • 2022-23 질롱 코리아 (8)
        • 류현진 등판경기 (4)
      • Minding's Programming (185)
        • 프로그래머스 코딩테스트 (21)
        • Knowledge (44)
        • Numpy & Pandas (6)
        • Excel (3)
        • Git (1)
        • Pygame (11)
        • CV (3)
        • Tensorflow tutorial (4)
        • Kaggle and Dacon (4)
        • 에러 코드 (8)
        • FastAPI (8)
        • Airflow (29)
        • Crawling (6)
        • Django (14)
        • AWS (18)
        • Spark (5)
      • Minding's Reading (30)
        • 머신러닝 딥러닝에 필요한 기초 수학 with 파이.. (2)
        • 칼만필터는 어렵지 않아 (11)
        • 밑바닥부터 시작하는 딥러닝 (6)
        • 메이저리그 야구 통계학 2e (8)
        • 논문읽기 (2)
        • 빅데이터를 지탱하는 기술 (1)
      • Minding's Life (5)
        • 주식 (4)
        • 각종 소식 (1)
  • 블로그 메뉴

    • 홈
    • Baseball
    • Programming
    • Reading
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    FastAPI
    데이터 엔지니어
    MLB
    파이게임
    게임개발
    Airflow
    프로그래머스
    KalmanFilter
    머신러닝
    넘파이
    칼만필터는어렵지않아python
    파이썬
    파이썬게임개발
    칼만필터
    Python
    mlb stats api
    코딩테스트
    데이터분석
    pygame
    django python
    에어플로우
    야구
    질롱코리아
    칼만필터는어렵지않아
    django
    칼만필터는어렵지않아파이썬
    KBO
    AWS
    딥러닝
    메이저리그
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Minding
[Airflow] Python Operator의 op_args, op_kwargs
상단으로

티스토리툴바