질문드립니다 4~5강
op_args와 op_kwargs 등 파라미터를 전달하는 함수를 사용할 때 task 파라미터를 사용해서 하는 방법은 따로 설명이 없는데
이렇게 함수에 파라미터를 전달해서 사용할 때는 파이썬오퍼레이터를 항상 써야만하는 건가요?
답변 3
1
안녕하세요 kosa.share05 님
섹션 4-3. @task 데코레이터 사용하기 부분에서 아래 부분을 설명드린 게 있습니다 (아래 캡처)

여기서 보시면 함수에 op_args 나 **kwargs 파라미터를 정의하지 않고 some_input 이라는 파라미터만 명시했습니다. 그러나 **kwargs 파라미터를 정의해도 됩니다.
즉 함수 정의를 아래처럼 하시고
@task(...)
def print_context(**kwargs):
user_msg = kwargs.get('user_msg')
순서를 만들 때 아래처럼 호출하시면 됩니다.
python_task_1 = print_context(user_msg='task_decorator 실행') 그럼 user_msg 라는 키와 "task_decorator 실행" 이라는 value가 kwargs에 전달됩니다.
그리고 user_msg 말고 다른 입력 파라미터 더 만들어서 던져도 됩니다.
그러면 kwargs(딕셔너리) 에서 추출해서 사용할 수 있습니다.
이해 되셨을까요?
그리고 그 뒤에 이어지는 강의를 보시면 context 변수에 접근하기 위해 @task 데코레이터를 적용한 함수에 **kwargs 를 사용하고 있는 걸 볼 수 있을꺼에요. 따라서 위에서 설명드린대로 @task 데코레이터 적용한 함수 호출 시 함수명(key1=value1, key2=value2) 이런식으로 호출하면 모두 kwargs에 들어옵니다.
0
안녕하세요, 인프런 AI 인턴입니다.
kosa.share05님, Airflow에서 파라미터를 전달하는 방법에 대한 질문을 주셨군요.
Airflow에서 파라미터를 전달하는 방법 중 하나는 op_args와 op_kwargs를 사용하는 것입니다. 이것은 PythonOperator를 사용할 때 일반적으로 사용되며, 이는 Python 함수를 실행하면서 인자를 전달할 수 있는 기능을 제공합니다.
@task 데코레이터를 활용하는 경우에는 함수 호출 시 인자를 직접 전달할 수 있는데, 이 방식은 PythonOperator 사용 시와는 약간 다릅니다. @task 데코레이터는 데코레이터의 특성을 활용하여 함수 호출 시에 바로 Task 객체를 반환하며, 이때도 인자를 전달할 수 있습니다.
예를 들어, 아래와 같이 @task 데코레이터를 사용하는 것이 가능합니다:
@task
def my_function(param1, param2):
# Your task logic here
pass
my_task = my_function(10, 20)
반면, PythonOperator를 사용할 때는 python_callable 속성과 함께 op_args나 op_kwargs를 통해 인자를 전달합니다:
def my_function(param1, param2):
# Your task logic here
pass
my_task = PythonOperator(
task_id='my_task',
python_callable=my_function,
op_args=[10, 20],
# 또는 op_kwargs={"param1": 10, "param2": 20}
)
@task 데코레이터는 간편한 구문을 제공하여 더 자연스러운 Python 코드 스타일로 작업할 수 있게 해주는 장점이 있습니다. 따라서, 반드시 PythonOperator를 사용할 필요는 없으며, @task 데코레이터와 함께 파라미터를 다루는 것도 충분히 좋은 방법입니다.
이와 관련하여, Airflow에서 @task 데코레이터의 사용에 대해 설명된 게시물을 참고하실 수 있습니다. 해당 게시물에서는 @task 데코레이터가 함수 호출 시 어떤 식으로 Task 객체를 반환하는지 설명하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
pykrx 회원제 전환으로 인한 실습 불가
0
114
2
수료증 발급
0
84
3
에러 발생 관련 질문드립니다.
0
83
2
vscode 작업화면에 오류가 발생하지 않습니다.
0
69
2
plugins 폴더 생성
0
76
2
WSL에서 git push 가 안되요 ㅠ
0
115
2
chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.
0
67
2
github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ
0
738
2
설치중인데 venv를 꼭 써야할까요?
0
126
2
설치 버전 관련 질문입니다.
0
68
1
우분투 버전 다운받아야하는데 어떤걸로 설치해야할까요?
0
62
1
DAG 만들기 중 airflow 패키지 로드 에러
0
106
2
3.0에서도 수업노트가 성립하는지 확인 부탁드립니다!
0
95
3
task_id 사용법이 뭔가 바뀐 것 같습니다.
0
76
3
email operator 오류 관련
0
66
2
plugins 폴더 관련
0
100
2
bash operator 관련 문의입니다
0
78
3
스케쥴러 - DAG 파싱 부하 줄이는 과정 질문
0
79
2
Dags refresh 주기 관련 질문
0
125
2
wsl 관련 질문입니다.!
0
75
2
macOS에서 docker 설치
0
94
2
템플릿 변수에 대한 오류
0
61
2
custom_image 디렉토리 문의드립니다.
0
54
2
ETL 인터뷰 관련 문의
0
103
2





