작성
·
206
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]가 반환되어서 혹시 제가 코드를 잘못 작성한건지 궁금해서 여쭤봅니다
원래 오타는 본인은 잘 안보여요 ^^
그래도 효석님의 이런저런 시도가 참 좋습니다.
강의 내용만 따라하기보다, 이렇게 하면 어뗗게 되지? 저렇게 해보면 어떻게 나오지? 같은걸 스스로 해볼 때 더 많이 늘어요.
화이팅입니다