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
)。