python - 从使用 Airflow KubernetesPodOperator 启动的 Pod 获取上下文
问题描述
我们有一些使用 KubernetesPodOperator 启动 pod 的 dag,我正在尝试获取 pod 内部的一些信息,例如 dag_id、task_id、try_number、环境等。
我知道我可以从 Airflow 任务的上下文中获取此信息(例如,Python Operator 上的 kwargs),但我一直在想,有没有办法可以从启动的 pod 中获取该上下文?
谢谢!
解决方案
我找到了一个很好的解决方案
我为类 KubernetesPodOperator 制作了一个自定义包装器,并使用 Airflow 任务的上下文更新了 env_vars
import airflow.configuration as config
from airflow.contrib.operators.kubernetes_pod_operator import KubernetesPodOperator as AirflowKubernetesPodOperator
class KubernetesPodOperator(AirflowKubernetesPodOperator):
def execute(self, context):
environment = config.conf.get('webserver', 'web_server_name')
ti = context['ti']
dag_id = ti.dag_id
task_id = ti.task_id
run_id = context['run_id']
try_number = str(ti._try_number)
labels = {
'ENVIRONMENT' : environment,
'DAG_ID' : dag_id,
'TASK_ID' : task_id,
'RUN_ID' : run_id,
'TRY_NUMBER' : try_number,
}
self.env_vars.update(labels)
super().execute(context)
推荐阅读
- django - 将 Django 应用程序部署到 Heroku 时出错
- python - 如何使用 CommentedMap 对 YAML 进行递归排序?
- aws-lambda - 使用无服务器设置从 Windows 部署到 lambda 的文件的执行权限
- python - Pandas - 如何在列中查找一组值,如果存在则返回另一列中的值
- python - 将任意长度的列表或元组传递给用 C 编写的 Python 扩展
- python - Scrapy请求,蜘蛛中的shell Fetch()
- c# - 如何使用现有数据库在 MVC (C#) 中进行开发
- python - 非零向量上的 TensorFlow 操作
- c# - 部署 AWS .NET SDK 项目失败
- firebase - 在限制之前和之后对 Firestore 集合进行排序