如何引用DAG';“KubernetesPodOperator”中的执行日期?

如何引用DAG';“KubernetesPodOperator”中的执行日期?,kubernetes,airflow,Kubernetes,Airflow,我正在编写一个DAG来从API中提取数据并将其存储在我自己的数据库中。按照中概述的最佳实践,我将DAG编写为一系列KubernetesPodOperators,它们运行非常简单的Python函数作为Docker映像的入口点 我试图解决的问题是,这个DAG应该只提取执行日期的数据 如果我使用的是PythonOperator(),我可以使用provide_context参数使函数可以使用执行日期。但从这一点来看,Kubernetes运算符似乎没有任何参数可以完成提供的内容 我的最佳猜测是,您可以使用

我正在编写一个DAG来从API中提取数据并将其存储在我自己的数据库中。按照中概述的最佳实践,我将DAG编写为一系列
KubernetesPodOperator
s,它们运行非常简单的Python函数作为Docker映像的入口点

我试图解决的问题是,这个DAG应该只提取
执行日期的数据

如果我使用的是
PythonOperator
(),我可以使用
provide_context
参数使函数可以使用执行日期。但从这一点来看,Kubernetes运算符似乎没有任何参数可以完成
提供的内容

我的最佳猜测是,您可以使用
arguments
命令来传递日期范围,并且由于它是模板化的,您可以像这样引用它:

my_pod_操作符=KubernetesPodOperator(
#…这里还有其他arg
arguments=['python'、'my_script.py'、'{{ds}}'],
#争论还在继续
)
然后,通过使用
sys.argv
获得开始日期,就像获得作为脚本运行的Python文件的任何其他参数一样

这样做对吗


谢谢你的帮助。

是的,这是正确的做法

每个操作员都有
模板\u字段
template\u字段中列出的所有参数都可以呈现Jinja2模板和气流宏

对于KubernetesPodOperator,如果您进行检查,您会发现:

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

这意味着您可以将
'{{ds}}}
传递给上面列出的四个参数中的任何一个。

您的问题询问这是否是“正确”的方式,但没有指定您以这种方式进行操作是否有障碍。它有用吗?如果提供额外的日期,您的脚本是否会阻塞?你不想做你所描述的事情有什么原因吗?另外,要预先警告的是,对于基于意见的问题,有一个明确的接近投票,所以你的问题目前处于危险之中<代码>参数=['{ds}}']
-请参阅模板配置