Вопрос проверяет понимание технических и архитектурных ограничений XCom.
XCom имеет ограничения по размеру данных и скорости работы. Он хранится в базе данных Airflow, поэтому большие объёмы сильно нагружают БД. Также XCom не предназначен для передачи бинарных данных. Массовое использование XCom усложняет поддержку системы. Его следует использовать только для метаданных.
Хотя XCom выглядит как удобный способ обмена данными, у него есть важные ограничения, которые необходимо учитывать в продакшене.
XCom limitation — это ограничение, связанное с хранением и передачей данных через metadata database Airflow.
XCom:
не предназначен для больших payload;
обычно безопасен для килобайт данных, а не мегабайт.
Большие значения:
увеличивают размер metadata DB;
замедляют UI и scheduler.
Каждый XCom:
это запись в БД;
участвует в запросах scheduler-а и UI.
При активном использовании:
растёт latency;
ухудшается стабильность Airflow.
XCom:
сериализует данные (чаще всего в JSON);
не все типы данных сериализуются корректно;
бинарные данные обрабатывать неудобно.
При большом количестве XCom:
сложнее дебажить DAG;
тяжелее анализировать зависимости;
сложнее делать миграции.
передавайте через XCom только ссылки и ID;
большие данные выносите во внешние системы;
периодически очищайте историю DAG Run.
XCom удобен, но ограничен по размеру и производительности. Его задача — передача метаданных, а не данных.