Bird
Raised Fist0
Apache Airflowdevops~10 mins

Pushing and pulling XCom values in Apache Airflow - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to push an XCom value in an Airflow task.

Apache Airflow
def push_function(ti):
    ti.[1](key='sample_key', value='sample_value')
Drag options to blanks, or click blank then click option'
Apull_xcom
Bpush_xcom
Cxcom_pull
Dxcom_push
Attempts:
3 left
💡 Hint
Common Mistakes
Using pull methods instead of push.
Incorrect method names like push_xcom.
2fill in blank
medium

Complete the code to pull an XCom value inside a task.

Apache Airflow
def pull_function(ti):
    value = ti.[1](key='sample_key', task_ids='push_task')
Drag options to blanks, or click blank then click option'
Axcom_push
Bxcom_pull
Cpull_xcom
Dpush_xcom
Attempts:
3 left
💡 Hint
Common Mistakes
Using push methods instead of pull.
Incorrect method names like pull_xcom.
3fill in blank
hard

Complete the code to push an XCom value in an Airflow task.

Apache Airflow
def push_function(ti):
    ti.[1]('sample_key', 'sample_value')
Drag options to blanks, or click blank then click option'
Axcom_push
Bpush_xcom
Cxcom_pull
Dpush
Attempts:
3 left
💡 Hint
Common Mistakes
Using pull methods instead of push.
Incorrect method names like push_xcom.
4fill in blank
hard

Fill both blanks to push and then pull an XCom value correctly.

Apache Airflow
def task_function(ti):
    ti.[1](key='key1', value='value1')
    pulled_value = ti.[2](key='key1', task_ids='task_function')
Drag options to blanks, or click blank then click option'
Axcom_push
Bxcom_pull
Cpush_xcom
Dpull_xcom
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up push and pull methods.
Using incorrect method names.
5fill in blank
hard

Fill all three blanks to push a value, pull it, and print it inside an Airflow task.

Apache Airflow
def task_function(ti):
    ti.[1](key='my_key', value='my_value')
    value = ti.[2](key='my_key', task_ids='task_function')
    print([3])
Drag options to blanks, or click blank then click option'
Axcom_push
Bxcom_pull
Cvalue
Dmy_value
Attempts:
3 left
💡 Hint
Common Mistakes
Printing the string literal instead of the variable.
Using wrong method names.

Practice

(1/5)
1. What is the main purpose of using xcom_push and xcom_pull in Airflow?
easy
A. To share small pieces of data between tasks in a workflow
B. To schedule tasks to run at specific times
C. To create new DAGs dynamically
D. To monitor task execution logs

Solution

  1. Step 1: Understand the role of XComs

    XComs are designed to let tasks exchange small data pieces during workflow execution.
  2. Step 2: Identify the functions' purpose

    xcom_push sends data, and xcom_pull retrieves it between tasks.
  3. Final Answer:

    To share small pieces of data between tasks in a workflow -> Option A
  4. Quick Check:

    Data sharing = A [OK]
Hint: Remember: push sends data, pull gets data [OK]
Common Mistakes:
  • Confusing XComs with scheduling tasks
  • Thinking XComs create DAGs
  • Assuming XComs handle logs
2. Which of the following is the correct syntax to push a value '42' with key 'result' inside a task instance ti?
easy
A. xcom_push(ti, 'result', 42)
B. ti.push_xcom('result', 42)
C. ti.xcom_pull(key='result', value=42)
D. ti.xcom_push(key='result', value=42)

Solution

  1. Step 1: Recall the method signature

    The correct method to push data is ti.xcom_push(key=..., value=...).
  2. Step 2: Check each option

    ti.xcom_push(key='result', value=42) matches the correct syntax. Options A and B use wrong method names or argument order. ti.xcom_pull(key='result', value=42) uses xcom_pull which is for pulling, not pushing.
  3. Final Answer:

    ti.xcom_push(key='result', value=42) -> Option D
  4. Quick Check:

    Push syntax = C [OK]
Hint: Push uses ti.xcom_push(key=..., value=...) [OK]
Common Mistakes:
  • Using wrong method names like push_xcom
  • Confusing push with pull
  • Incorrect argument order
3. Given the following code snippet inside a task:
ti.xcom_push(key='data', value=100)
value = ti.xcom_pull(key='data')

What will be the value of the variable value after execution?
medium
A. None
B. KeyError
C. 100
D. 'data'

Solution

  1. Step 1: Understand the push operation

    The code pushes the integer 100 with key 'data' into XCom storage.
  2. Step 2: Understand the pull operation

    The code pulls the value stored with key 'data', which is 100.
  3. Final Answer:

    100 -> Option C
  4. Quick Check:

    Push 100, pull 100 = D [OK]
Hint: Pull returns the value pushed with the same key [OK]
Common Mistakes:
  • Expecting pull to return None if key exists
  • Confusing key with value
  • Assuming pull raises error if key exists
4. You wrote this code inside a task:
ti.xcom_push('result', 10)
value = ti.xcom_pull(key='result')

But value is always None. What is the likely problem?
medium
A. The xcom_push call is missing keyword arguments
B. The key 'result' does not exist in XCom
C. You must call xcom_pull before xcom_push
D. XComs cannot store integers

Solution

  1. Step 1: Check the xcom_push syntax

    The method requires keyword arguments: key= and value=. Passing positional arguments causes failure.
  2. Step 2: Understand the effect of wrong syntax

    Because the push failed silently, the key 'result' was never stored, so pull returns None.
  3. Final Answer:

    The xcom_push call is missing keyword arguments -> Option A
  4. Quick Check:

    Push needs key= and value= [OK]
Hint: Always use key= and value= in xcom_push [OK]
Common Mistakes:
  • Using positional arguments in xcom_push
  • Assuming pull before push order matters
  • Thinking XComs can't store integers
5. You want to pass a dictionary from one task to another using XCom. Which code snippet correctly pushes and pulls the dictionary {'a': 1, 'b': 2}?
hard
A. ti.xcom_push('my_dict', {'a': 1, 'b': 2}) data = ti.xcom_pull('my_dict')
B. ti.xcom_push(key='my_dict', value={'a': 1, 'b': 2}) data = ti.xcom_pull(key='my_dict')
C. ti.xcom_push(value={'a': 1, 'b': 2}, key='my_dict') data = ti.xcom_pull(key='my_dict')
D. ti.xcom_push(key='my_dict', value='{'a': 1, 'b': 2}') data = ti.xcom_pull(key='my_dict')

Solution

  1. Step 1: Verify correct xcom_push syntax with dictionary

    ti.xcom_push(key='my_dict', value={'a': 1, 'b': 2}) data = ti.xcom_pull(key='my_dict') uses correct keyword arguments key= and value= with a dictionary value.
  2. Step 2: Check other options for errors

    ti.xcom_push(value={'a': 1, 'b': 2}, key='my_dict') data = ti.xcom_pull(key='my_dict') uses non-standard keyword argument order; ti.xcom_push('my_dict', {'a': 1, 'b': 2}) data = ti.xcom_pull('my_dict') uses positional args which is incorrect; ti.xcom_push(key='my_dict', value='{'a': 1, 'b': 2}') data = ti.xcom_pull(key='my_dict') passes dictionary as a string with wrong quotes causing syntax error.
  3. Final Answer:

    ti.xcom_push(key='my_dict', value={'a': 1, 'b': 2}) data = ti.xcom_pull(key='my_dict') -> Option B
  4. Quick Check:

    Push dict with key= and value= [OK]
Hint: Use key= and value= with dict, avoid string quotes errors [OK]
Common Mistakes:
  • Using positional arguments in xcom_push
  • Passing dict as a string with wrong quotes
  • Mixing argument order incorrectly
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