如何将xcom变量推送到现有的dag id?

时间:2019-12-04 20:55:56

标签: python airflow apache-airflow-xcom

我目前在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参数一样?

1 个答案:

答案 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