访问op之外的气流操纵器值

2024-09-28 21:55:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在操作符之外,我需要调用SubdagOperator,并使用xcom将操作符的返回值传递给它。我见过很多解决方案(Airflow - How to pass xcom variable into Python functionHow to retrieve a value from Airflow XCom pushed via SSHExecuteOperator,等等)。在

它们基本上都说“变量名”:“{提拉(task_ids='some\u task\u id')}“

但是我的Jinja模板一直被呈现为一个字符串,并且没有返回实际的变量。有什么想法为什么?在

以下是我在主dag中的当前代码:

PARENT_DAG_NAME = 'my_main_dag'
CHILD_DAG_NAME = 'run_featurization_dag'

run_featurization_task = SubDagOperator(
    task_id=CHILD_DAG_NAME,
    subdag=run_featurization_sub_dag(PARENT_DAG_NAME, CHILD_DAG_NAME, default_args, cur_date, "'{{ ti.xcom_pull(task_ids='get_num_accounts', dag_id='" + PARENT_DAG_NAME + "') }}'" ),  
    default_args=default_args,
    dag=main_dag
)

Tags: torunnameidchilddefaulttaskargs
2条回答

报价太多?试试这个

"{{ ti.xcom_pull(task_ids='get_num_accounts', dag_id='" + PARENT_DAG_NAME + "') }}"

Jinja模板只适用于某些参数,而不是所有参数。在

You can use Jinja templating with every parameter that is marked as “templated” in the documentation. Template substitution occurs just before the pre_execute function of your operator is called.

https://airflow.apache.org/concepts.html#jinja-templating

所以恐怕你不能这样传递一个变量。在

相关问题 更多 >