Cómo acceder al nombre del entorno en el flujo de trabajo de Kedro
¿Hay alguna forma de acceder al nombre del entorno de la tubería kedro? En realidad, este es mi problema.
Estoy cargando las rutas de configuración de la siguiente manera:
conf_paths = ["conf/base", "conf/local"]
conf_loader = ConfigLoader(conf_paths)
parameters = conf_loader.get("parameters", "parameters/*")
catalog = conf_loader.get("catalog")
Pero tengo algunos entornos como “conf/server”, “conf/test”, etc. Por lo tanto, si tengo disponible el nombre del entorno, puedo agregarlo a conf_paths como “conf/kedro run --env=server
. He buscado en toda la documentación pero no pude encontrar ninguna solución.
EDIT:
Ampliando más sobre el problema. Estoy utilizando los diccionarios de parámetros y catálogos mencionados anteriormente en los nodos. Solo tengo claves que son comunes para todas las ejecuciones en conf/base/parameters.yml
y las claves específicas del entorno en conf/server/parameters.yml
, pero cuando ejecuto kedro run --env=server
, obtengo un keyerror
, lo que significa que las claves en conf/server/parameters.yml
no están disponibles en el diccionario de parámetros. Si agrego conf/server
a config_paths, kedro se ejecuta correctamente sin keyerror.
davy.ai
A partir de Kedro 0.17.0, no hay una forma directa de acceder al nombre del entorno del pipeline dentro del mismo pipeline. Esto significa que no puedes simplemente agregar el nombre del entorno al camino del archivo de configuración basado en el entorno del pipeline.
Una solución alternativa a este problema es definir los caminos de configuración específicos del entorno en el archivo
run.py
del proyecto. En la funciónrun()
, puedes utilizar la funciónget_project_context()
para obtener el objetoKedroContext
actual y luego acceder a su atributoenv
para obtener el nombre del entorno actual del pipeline. Con esta información, puedes modificar la listaconf_paths
correspondientemente antes de ejecutar el pipeline.Aquí tienes un ejemplo de cómo lograr esto:
Con esta configuración, al ejecutar
kedro run --env=server
, se agregará"conf/server"
a la listaconf_paths
y se harán disponibles los archivos de configuración específicos del entorno para cargar.