气流渲染模板将变为字符串

2024-03-29 05:21:37 发布

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

我试图使用jinja模板将xcom中的一些json解析到字典中。请注意,Operator和{}是psuedo代码。在

def xcom_from_json(xcom):
    xcom_loaded = json.loads(xcom)
    logging.info(pformat(f'xcom loaded: {xcom_loaded}', indent=3))
    return xcom_loaded

PythonOperator(python_callable=some_callable,
           op_args=[f'{{{{ (ti.xcom_pull("{task_id}") | xcom_from_json)["data"]["stats"] }}}}'])

上面的方法几乎可以。在some_callable方法中,我得到了已解析的jinja,但是它是一个stringized dict而不是一个原始dict。这没有意义,因为您可以在jinja模板中看到作为dict遍历的结构。jinja把模板中的所有东西都串起来了吗?如果是,有没有办法不这么做?在


Tags: 方法代码from模板json字典defsome
1条回答
网友
1楼 · 发布于 2024-03-29 05:21:37

一个呈现的jinja模板总是返回一个字符串。相反,您可以从python方法中获取XCom值。在

def some_callable(task_id, **context):
    stats = json.loads(context['ti'].xcom_pull(task_id)['data']['stats'])

PythonOperator(
    ...
    python_callable=some_callable,  
    op_args=[f'{task_id}'],
    provide_context=True)

请注意,您必须提供context,这使python方法具有与jinja模板相同的值访问权限。在

相关问题 更多 >