Petty little joy # 5: Dynaconf - administrando la configuración en el proyecto

Algunas preguntas en el mundo del desarrollo de la casa del pozo tienen el poder mágico de levantar ejércitos enteros de personas, dirigirlos a una guerra santa y obligarlos a enfrentarse entre sí con montones de argumentos, cálculos y códigos. A veces, cuando termina la discusión, los ejércitos en guerra se mueven rápidamente hacia la guerra arrojando montones de excremento verbal.


Los temas populares incluyen:


  • ¿Debería incluso escribir este proyecto en Python?
  • ¿Qué marco tomar para el desarrollo?
  • ¿Quién es más rápido, la biblioteca X o la biblioteca Y?

Hoy trataré de elegir suavemente uno de estos temas mágicos: la pregunta "¿Cómo administrar las configuraciones en un proyecto?".



Obviamente, hay muchas maneras de configurar un programa en vivo.


  • Variables de entorno (junto con archivos .env en el montón).
  • Todo tipo de archivos especializados en formatos yaml, json, xml, ini.
  • * .py archivos con clases o "constantes".
  • configparser de la biblioteca estándar de Python.
  • Soluciones autoescritas basadas en clases, módulos, archivos, telepatía, magia negra (o todos juntos).
  • Administradores de configuración integrados en el marco (como, por ejemplo, en Flask).

Hay suficientes formas, puedes elegir cualquier cosa y usarla. Pero el progreso se detendría si las personas no intentaran mejorar y optimizar todo en una fila (incluido algo que ha estado funcionando durante mucho tiempo y con una calidad aceptable). Las manos de los entusiastas finalmente llegaron a las configuraciones de las aplicaciones Python.


Entonces hubo dynaconf


Los desarrolladores no estaban particularmente preocupados con la invención de sus enfoques astutos y reunieron todos los métodos populares de trabajar con configuraciones bajo el techo de uno.


  • Puede leer archivos (.json, .ini, yaml y el nuevo .toml, que también vale la pena conocer)
  • Puede recoger variables de entorno y archivos .env
  • Puede usar almacenamiento y servicios externos (desde Redis simple hasta almacenamiento seguro especial con contraseñas)
  • Todo esto se fusiona con éxito con las configuraciones de los marcos Flask y Django.

Y, por supuesto, además, agregamos un conjunto de bollos que facilita la vida en cualquier proyecto


  • Entornos de conmutación fáciles de desarrollo / puesta en escena / pruebas / producción.
  • La configuración predeterminada.
  • Activar y desactivar las funciones en el código (los vendedores, gerentes de producto y evaluadores estarán contentos).
  • Una utilidad de consola que le permite cambiar la configuración del proyecto sobre la marcha sin tocar el código.

Source: https://habr.com/ru/post/457196/


All Articles