When we want to get an XCom variable in the on_failure_callback, we will face a nasty bug. Using the ti
key to retrieve a value from the context gives us a None value.
# This does not work
context.get("ti").xcom_pull(key="test")
It happens because in the on_failure_callback the task instance is passed to the function using the task_instance
key. Therefore to get a value from XCom, we must execute this code:
task: TaskInstance = context.get('task_instance')
task.xcom_pull(key="test")
Alternatively, we can import XCom and access it directly:
from airflow.models import XCom
XCom.get_one(execution_date = context.get('execution_date'), key='test')
Want to build AI systems that actually work?
Download my expert-crafted GenAI Transformation Guide for Data Teams and discover how to properly measure AI performance, set up guardrails, and continuously improve your AI solutions like the pros.