Bird
Raised Fist0
Apache Airflowdevops~5 mins

XCom with return values in Apache Airflow - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is an XCom in Apache Airflow?
An XCom (short for cross-communication) is a way for tasks in Airflow to exchange small pieces of data or messages during a workflow run.
Click to reveal answer
beginner
How do you return a value from a PythonOperator task to be used by another task?
You return the value from the Python function used in the PythonOperator. Airflow automatically pushes this return value as an XCom.
Click to reveal answer
intermediate
How can a downstream task pull an XCom value returned by an upstream task?
Use the task instance's xcom_pull method with the task_id of the upstream task to get the returned value.
Click to reveal answer
intermediate
What is the default key used when pushing XComs with return values?
The default key is 'return_value' when a task returns a value that Airflow pushes as an XCom.
Click to reveal answer
beginner
Why should XComs be used only for small data?
Because XComs store data in the Airflow metadata database, large data can slow down the system and cause performance issues.
Click to reveal answer
What happens when a PythonOperator's Python function returns a value?
AThe value is saved to a file.
BThe value is ignored unless manually pushed.
CThe value is automatically pushed as an XCom with key 'return_value'.
DThe task fails.
Which method is used to retrieve an XCom value in a task?
Axcom_push()
Bxcom_pull()
Cget_xcom()
Dfetch_xcom()
What is the recommended size of data to pass via XComs?
ASmall pieces of data like strings or numbers
BLarge files like images or videos
CEntire databases
DFull application logs
If you want to pass multiple values via XCom, what should you do?
AReturn a dictionary or list from the Python function
BReturn multiple values separately
CUse multiple PythonOperators
DXComs do not support multiple values
Which Airflow component stores XCom data?
AScheduler
BWorker logs
CExecutor
DMetadata database
Explain how to pass data from one task to another using XCom return values in Airflow.
Think about how Python functions return values and how Airflow handles them.
You got /3 concepts.
    Describe best practices and limitations when using XComs for passing data between tasks.
    Consider performance and storage when using XComs.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does returning a value from a PythonOperator task do in Airflow?
      easy
      A. Automatically pushes the returned value to XCom for other tasks to use.
      B. Saves the value only in the task logs without sharing.
      C. Deletes any previous XCom values for that task.
      D. Triggers the next task immediately without waiting.

      Solution

      1. Step 1: Understand PythonOperator return behavior

        When a PythonOperator returns a value, Airflow automatically stores it in XCom for that task instance.
      2. Step 2: Recognize XCom purpose

        XCom is designed to share data between tasks, so returning a value pushes it to XCom for downstream tasks.
      3. Final Answer:

        Automatically pushes the returned value to XCom for other tasks to use. -> Option A
      4. Quick Check:

        Return value = XCom push [OK]
      Hint: Return values from PythonOperator go to XCom automatically [OK]
      Common Mistakes:
      • Thinking return values are only logged, not shared
      • Assuming return clears previous XCom data
      • Believing return triggers next task immediately
      2. Which of the following is the correct way to pull an XCom value in a downstream task?
      easy
      A. ti.xcom_pull(task_ids='task1', key='return_value')
      B. ti.xcom_push(key='result')
      C. xcom_pull(task_id='task1')
      D. ti.pull_xcom(task_id='task1')

      Solution

      1. Step 1: Identify correct method signature

        The method to pull XCom data is ti.xcom_pull(), which requires task_ids and optionally a key.
      2. Step 2: Match correct parameters

        Correct usage is ti.xcom_pull(task_ids='task1', key='return_value') to get the returned value from task1.
      3. Final Answer:

        ti.xcom_pull(task_ids='task1', key='return_value') -> Option A
      4. Quick Check:

        Use ti.xcom_pull with task_ids and key [OK]
      Hint: Use ti.xcom_pull(task_ids, key) to get XCom data [OK]
      Common Mistakes:
      • Using xcom_push instead of xcom_pull to get data
      • Wrong parameter names like task_id instead of task_ids
      • Calling non-existent methods like ti.pull_xcom
      3. Given this DAG snippet:
      def task1():
          return {'value': 42}
      
      def task2(ti):
          data = ti.xcom_pull(task_ids='task1')
          print(data)

      What will task2 print when executed?
      medium
      A. None
      B. {'return_value': {'value': 42}}
      C. 42
      D. Error: xcom_pull missing key

      Solution

      1. Step 1: Understand task1 return value

        task1 returns a dictionary {'value': 42}, which is pushed to XCom automatically.
      2. Step 2: Analyze task2 xcom_pull call

        task2 calls ti.xcom_pull(task_ids='task1') without a key, so it pulls all XCom values from task1 as a dictionary {'return_value': {'value': 42}}.
      3. Final Answer:

        {'return_value': {'value': 42}} -> Option B
      4. Quick Check:

        Pull without key returns XComs dict [OK]
      Hint: Pull without key returns XComs dict [OK]
      Common Mistakes:
      • Expecting only the inner value without specifying key
      • Assuming None if key is not given
      • Thinking it raises an error without key
      4. What is wrong with this code snippet?
      def task1():
          return 100
      
      def task2(ti):
          value = ti.xcom_pull(task_ids='task1', key='value')
          print(value)
      medium
      A. task2 must use task_id instead of task_ids in xcom_pull.
      B. task1 should push to XCom manually using xcom_push.
      C. task2 pulls with wrong key; default return key is 'return_value'.
      D. task1 return value must be a string, not int.

      Solution

      1. Step 1: Check task1 return and XCom key

        task1 returns 100, which is stored in XCom with the default key 'return_value'.
      2. Step 2: Analyze task2 xcom_pull key usage

        task2 tries to pull with key='value', which does not exist, so it will return None.
      3. Final Answer:

        task2 pulls with wrong key; default return key is 'return_value'. -> Option C
      4. Quick Check:

        Default XCom key for return is 'return_value' [OK]
      Hint: Default XCom key for return is 'return_value' [OK]
      Common Mistakes:
      • Thinking return requires manual xcom_push
      • Using wrong key name in xcom_pull
      • Confusing task_id and task_ids parameter names
      5. You want to pass a dictionary from task1 to task3 through task2 without modifying task2. Which is the best way to do this using XCom return values?
      hard
      A. Use Airflow Variables instead of XCom for this data passing.
      B. Have task1 push manually; task2 returns the same dictionary to pass it on.
      C. Modify task2 to pull from task1 and push to task3 manually.
      D. Have task1 return the dictionary; task3 pulls it directly using ti.xcom_pull(task_ids='task1').

      Solution

      1. Step 1: Understand XCom chaining

        XCom stores data per task instance; tasks can pull data from any previous task by specifying task_ids.
      2. Step 2: Avoid modifying task2

        Since task2 should not be changed, task3 can pull data directly from task1's XCom return value.
      3. Final Answer:

        Have task1 return the dictionary; task3 pulls it directly using ti.xcom_pull(task_ids='task1'). -> Option D
      4. Quick Check:

        Pull directly from original task to avoid modifying intermediates [OK]
      Hint: Pull XCom directly from original task to skip intermediate tasks [OK]
      Common Mistakes:
      • Thinking data must pass through every intermediate task
      • Modifying tasks unnecessarily to forward XCom
      • Using Variables instead of XCom for task-to-task data
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard