Eri*_*mer 4 kubernetes airflow
我正在编写一个 Airflow DAG 来从 API 中提取数据并将其存储在我拥有的数据库中。遵循We're All Using Airflow Wrong 中概述的最佳实践,我将 DAG 编写为一系列KubernetesPodOperators,这些 s 运行非常简单的 Python 函数作为 Docker 映像的入口点。
我试图解决的问题是这个 DAG 应该只为execution_date.
如果我使用PythonOperator( doc ),我可以使用provide_context参数使执行日期对函数可用。但是从KubernetesPodOperator 的文档来看,似乎 Kubernetes Operator 没有任何论据可以做什么provide_context。
我最好的猜测是您可以使用该arguments命令传入一个日期范围,并且由于它是模板化的,您可以像这样引用它:
my_pod_operator = KubernetesPodOperator(
# ... other args here
arguments=['python', 'my_script.py', '{{ ds }}'],
# arguments continue
)
Run Code Online (Sandbox Code Playgroud)
然后你会得到开始日期,就像你得到作为脚本运行的 Python 文件的任何其他参数一样,通过使用sys.argv.
这是正确的做法吗?
谢谢您的帮助。
是的,这是正确的做法。
每个操作员都会有template_fields. 中列出的所有参数都template_fields可以渲染 Jinja2 模板和 Airflow 宏。
对于 KubernetesPodOperator,如果您查看docs,您会发现:
template_fields = ['cmds', 'arguments', 'env_vars', 'config_file']
Run Code Online (Sandbox Code Playgroud)
这意味着您可以传递'{{ ds }}'给上面列出的四个参数中的任何一个。
| 归档时间: |
|
| 查看次数: |
887 次 |
| 最近记录: |