如何在`KubernetesPodOperator`中引用DAG的执行日期?

问题描述 投票:1回答:1

我正在编写一个Airflow DAG来从API中提取数据并将其存储在我拥有的数据库中。遵循We're All Using Airflow Wrong中概述的最佳实践,我将DAG编写为KubernetesPodOperators序列,它运行非常简单的Python函数作为Docker镜像的入口点。

我试图解决的问题是这个DAG应该只为execution_date提取数据。

如果我使用PythonOperatordoc),我可以使用provide_context参数使该函数的执行日期可用。但是从the KubernetesPodOperator's documentation来看,似乎Kubernetes运算符没有任何关于provide_context做什么的论据。

我最好的猜测是你可以使用arguments命令传递一个日期范围,因为它是模板化的,你可以像这样引用它:

my_pod_operator = KubernetesPodOperator(
    # ... other args here
    arguments=['python', 'my_script.py', '{{ ds }}'],
    # arguments continue
)

然后你会得到开始日期,就像你通过使用sys.argv获得提供给作为脚本运行的Python文件的任何其他参数一样。

这是正确的做法吗?

谢谢您的帮助。

kubernetes airflow
1个回答
3
投票

是的,这是正确的做法。

每个运营商都有template_fieldstemplate_fields中列出的所有参数都可以渲染Jinja2模板和Airflow宏。

对于KubernetesPodOperator,如果你检查docs,你会发现:

template_fields = ['cmds', 'arguments', 'env_vars', 'config_file']

这意味着你可以通过'{{ ds }}'to上面列出的四个参数中的任何一个。

© www.soinside.com 2019 - 2024. All rights reserved.