【问题标题】:Airflow XCom to Python Variable气流 XCom 到 Python 变量
【发布时间】:2020-01-16 18:48:44
【问题描述】:

我有一个存储的 XCom expense_list 我想将其转换为 Python 变量 expense_variable(而不是将其传递到模板字段中)。我试图在我的 DAG 中设置变量,但以下代码不起作用。

expense_variable = "{{task_instance.xcom_pull(task_ids='expense_list')}}"

如何在 Airflow 中将存储的 XCom expense_list 转换为 Python 变量 expense_variable?有这方面的函数或运算符吗?

【问题讨论】:

    标签: google-app-engine google-cloud-platform google-bigquery google-cloud-storage airflow


    【解决方案1】:

    回想一下,JINJA 模板是 Airflow 人员提供的一项有用的功能,可以让我们的生活更轻松;这并不意味着我们必须(或者我们应该使用)任何地方的 JINJA 模板,尽管我们真的不能。

    再次引用gotchas from Gtoonstra(您似乎错过了in previous answer)

    并不是所有操作符中的参数都是模板化的,所以你不能使用 Jinja 到处都是模板。 Jinja 模板仅适用于这些领域 在运算符中,它列在模板字段列表中 源文件,如:

    template_fields = ('audit_key', 'cycle_dtm')
    

    在这种特殊情况下,没有理由通过 JINJA 模板提取 XCOM。您可以简单地参考从context dict 获得的task_instance object 显示how you can pull them 的文档

    expense_variable = context['task_instance'].xcom_pull(task_ids='expense_list')

    【讨论】:

      猜你喜欢
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      相关资源
      最近更新 更多