Airflow 运行时来自xcom的气流池值
有三个池Airflow 运行时来自xcom的气流池值,airflow,apache-airflow-xcom,Airflow,Apache Airflow Xcom,有三个池low、medium和high,配置了1、2和3个插槽 现在,task1根据一些计算设置pool的xcom值,并且task2需要在该池中进行调度 样本代码- dag = DAG("mongo-connection-test") def test(**kwargs): # some condition to set pool value pool = "high" kwargs['ti'].xcom_push(key="pool", value=pool) t
low
、medium
和high
,配置了1、2和3个插槽
现在,task1
根据一些计算设置pool
的xcom值,并且task2
需要在该池中进行调度
样本代码-
dag = DAG("mongo-connection-test")
def test(**kwargs):
# some condition to set pool value
pool = "high"
kwargs['ti'].xcom_push(key="pool", value=pool)
task1 = PythonOperator(task_id="set_xcom",
python_callable=test,
xcom_push=True,
provide_context=True,
dag=dag)
task2 = BashOperator(
task_id="test",
bash_command="echo Hello !!",
dag=dag,
pool='{{ ti.xcom_pull(task_ids="set_xcom", key="pool") }}',
provide_context=True)
task1 >> task2
但task2无法从xcom中提取值,调度程序将无法执行,并说明没有池存在“{{ti.xcom\u pull(task\u ids=“test”,key=“pool”)}”
。
需要帮助解决此问题吗?我建议您阅读有关的文档。 如果您想使用它,请尝试先查看源代码中的
template\u字段
(例如)
由于pool
不在该列表中,因此您尝试执行的操作将不起作用
因此,我建议您使用3种不同的池设置创建任务3次,并使用BranchPythonOperator
选择应运行3个任务中的哪一个(您可以从BranchPythonOperator
中的XCom提取)
您的DAG可能如下所示:
task1 >> branch_task >> [task2_low, task2_medium, task2_high]
我建议您阅读有关的文档。 如果您想使用它,请尝试先查看源代码中的
template\u字段
(例如)
由于pool
不在该列表中,因此您尝试执行的操作将不起作用
因此,我建议您使用3种不同的池设置创建任务3次,并使用BranchPythonOperator
选择应运行3个任务中的哪一个(您可以从BranchPythonOperator
中的XCom提取)
您的DAG可能如下所示:
task1 >> branch_task >> [task2_low, task2_medium, task2_high]
pool
不是template\u字段的一部分,这意味着jinja模板不会被翻译。您可能需要重组任务。另一方面,当您xcom\u pull
时,您将任务ID设置为您从其推送任务的人(set\u xcom
)。pool
不属于template\u字段
,这意味着jinja模板不会被翻译。您可能需要重组任务。另一方面,当您xcom\u pull
时,您将任务ID设置为从其推送任务的人(set\u xcom
)。