-
카테고리
-
세부 분야
데이터 엔지니어링
-
해결 여부
미해결
xcom_pull 메서드 사용 질문
24.04.19 15:58 작성 조회수 65
0
안녕하세요
강의에서 xcom_pull 메서드 사용시 task_ids를 지정하지 않으면 가장 마지막 태스크의 키값을 가져온다고 하셨는데요, 실습코드를 돌려보니 먼저 실행되었던 태스크의 밸류값을 리턴합니다.
from airflow import DAG
import pendulum
from airflow.decorators import task
with DAG(
dag_id="dags_python_with_xcom_eg1",
schedule="30 6 * * *",
start_date=pendulum.datetime(2024, 3, 1, tz="Asia/Seoul"),
catchup=False,
) as dag:
@task(task_id="python_xcom_push_task1")
def xcom_push1(**kwargs):
ti = kwargs["ti"]
ti.xcom_push(key="result1", value="value_1")
ti.xcom_push(key="result2", value=[1, 2, 3, 4])
@task(task_id="python_xcom_push_task2")
def xcom_push2(**kwargs):
ti = kwargs["ti"]
ti.xcom_push(key="reuslt1", value="value_2")
ti.xcom_push(key="reuslt2", value=[1, 2, 3])
@task(task_id="python_xcom_pull_task")
def xcom_pull(**kwargs):
ti = kwargs["ti"]
value1 = ti.xcom_pull(key="result2") # [1, 2, 3]
value2 = ti.xcom_pull(
key="result1", task_ids="python_xcom_push_task1"
) # value_1
print(value1)
print(value2)
xcom_push1() >> xcom_push2() >> xcom_pull()
dag는 위와 같이 작성했고요, [1, 2, 3]이 반환될 것으로 기대했던 부분에서 [1, 2, 3, 4]가 반환되어서 혹시 제가 코드를 잘못 작성한건지 궁금해서 여쭤봅니다
답변을 작성해보세요.
1
김현진
지식공유자2024.04.20
안녕하세요 방효석님!
두 번째 task에 오타가 있습니다.
key=reuslt1 --> resutl1
key=reuslt2 --> result2
로 수정해서 돌려보시겠어요?
답변 2