XComs must be explicitly written (pushed) by a task and explicitly read (pulled) by another. There is no automatic data propagation. Many operators automatically push their result as the return_value key when do_xcom_push=True (the default), and @task functions do the same. However, the receiving task must still request that data via xcom_pull() . This exclusive, opt‑in model prevents unintended side effects and keeps data flow explicit.
from airflow.models.xcom import BaseXCom from my_locker import acquire_lock airflow xcom exclusive
@task def produce_id() -> str: return "data_lake/2024-01-01/partition.parquet" XComs must be explicitly written (pushed) by a
The and type of data you need to pass between your tasks. airflow xcom exclusive
export AIRFLOW__COMMON_IO__XCOM_OBJECTSTORAGE_COMPRESSION='gzip'