我目前在Airflow中有一个DAG,它带有Python运算符和可调用的相关python,例如:
def push_xcom(**kwargs):
ti = kwargs["ti"]
ti.xcom_push(key=key, value=value)
xcom_opr = PythonOperator(
task_id='xcom_opr',
python_callable=push_xcom,
dag=dag
)
此dag的目标是更新Airflow中定义的其他DAG的xcom变量。这不可能吗?我找不到xcom_push
的任何源代码,但也许像dag_id
参数一样?
答案 0 :(得分:1)
看一下TaskInstance的源代码,看来您可以直接复制它的功能,并指定所需的DAG ID。
XCom.set(
key=key,
value=value,
task_id=self.task_id,
dag_id=self.dag_id,
execution_date=execution_date or self.execution_date)
但是,xcom_pull
API直接支持从另一个DAG的xcom进行拉取,所以也许您可以让您想要修改从另一个DAG的拉取的DAG?
def xcom_pull(
self,
task_ids: Optional[Union[str, Iterable[str]]] = None,
dag_id: Optional[str] = None,
key: str = XCOM_RETURN_KEY,
include_prior_dates: bool = False) -> Any