inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Airflow 마스터 클래스

@task 데코레이터 사용하기

task 데코레이터 사용시 궁금증이 있습니다.

362

박희진

작성한 질문수 4

0

task 데코레이터를 사용하면서부터 함수호출값을 받게 변경되는 점이 궁금합니다.

 

변경 전

def foo():
    ...

py_task = PythonOperator(
          python_callable=foo)

변경 후

@task(task_id='py_task')
def foo():
    ...

py_task = foo()

 

변경 후에는 foo라는 함수원형을 입력하는 것이 아니라 함수를 호출하게 되는데 데코레이터로 감쌌기 때문에 괜찮아지는 건가요?

python 데이터-엔지니어링 airflow

답변 1

0

김현진

안녕하세요 희진님!

네, 질문하신 내용이 맞습니다.

데커레이터로 감싸여진 함수을 호출하면 데커레이터의 효과가 나타납니다.

@task 데커레이터는 감싸고 있는 함수를 호출하면 그 리턴값으로 어떤 airflow의 task 객체가 되게끔 합니다.

그런데 task1 = PythonOperator(task_id='xxx') 와 같이 고전적으로(?) 만든 task1 객체와는 조금 다른 객체에요.

 

강의에서 다루지만 @task 데커레이터로 만들어진 객체는 함수의 리턴값을 Xcom에 저장하기도 하고 다른 객체가 리턴한 값을 Xcom에서 찾아오는 기능도 갖춘 조금 특별한 객체인 셈이죠.

 

이해되셨을까요?

0

박희진

친절한 답변 감사드립니다 ㅎㅎ

대충 이해했습니다 @task 데커레이터가 정확하게 어떻게 구현되어있는지를 알 수 없어 일단은 넘어가고 강의를 다 듣고 나서도 궁금하면 그 때 airflow에서 코드를 자세하게 찾아보면 될거 같습니다

감사합니다!

pykrx 회원제 전환으로 인한 실습 불가

0

109

2

수료증 발급

0

81

3

에러 발생 관련 질문드립니다.

0

82

2

vscode 작업화면에 오류가 발생하지 않습니다.

0

69

2

plugins 폴더 생성

0

74

2

WSL에서 git push 가 안되요 ㅠ

0

112

2

chatGPT&Airflow로 블로그 자동 포스팅하기 는 Deprecated 가 필요합니다.

0

66

2

github에 회원가입이 안되는데 원인이 뭔지 모르겠어요 ㅠ

0

722

2

설치중인데 venv를 꼭 써야할까요?

0

124

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

96

2

bash operator 관련 문의입니다

0

78

3

스케쥴러 - DAG 파싱 부하 줄이는 과정 질문

0

79

2

Dags refresh 주기 관련 질문

0

123

2

wsl 관련 질문입니다.!

0

73

2

macOS에서 docker 설치

0

93

2

템플릿 변수에 대한 오류

0

61

2

custom_image 디렉토리 문의드립니다.

0

54

2

ETL 인터뷰 관련 문의

0

103

2