Petty little joy # 5: Dynaconf - gerenciando configurações no projeto

Algumas questões no mundo do desenvolvimento de casas de pit têm o poder mágico de criar exércitos inteiros de pessoas, encaminhá-los para uma guerra santa e forçá-los a se jogar com montes de argumentos, cálculos e códigos. Às vezes, quando o argumento termina, os exércitos em guerra rapidamente se movem para a guerra jogando pilhas de excremento verbal.


Os tópicos populares incluem:


  • Devo escrever este projeto em Python?
  • Que estrutura a ser adotada para o desenvolvimento?
  • Quem é mais rápido, a biblioteca X ou a biblioteca Y?

Hoje vou tentar escolher apenas um desses tópicos mágicos - a pergunta "Como gerenciar configurações em um projeto?".



Obviamente, existem várias maneiras de configurar um programa ao vivo.


  • Variáveis ​​de ambiente (junto com arquivos .env para o heap).
  • Todos os tipos de arquivos especializados nos formatos yaml, json, xml, ini.
  • * .py arquivos com classes ou "constantes".
  • configparser da biblioteca padrão do Python.
  • Soluções auto-escritas baseadas em classes, módulos, arquivos, telepatia, magia negra (ou todos juntos).
  • Gerenciadores de configuração integrados à estrutura (como, por exemplo, no Flask).

Existem maneiras suficientes, você pode escolher qualquer coisa e usá-lo. Mas o progresso seria interrompido se as pessoas não tentassem melhorar e otimizar tudo em sequência (incluindo o que está funcionando há muito tempo e com qualidade aceitável). As mãos dos entusiastas finalmente chegaram às configurações dos aplicativos Python.


Então havia dynaconf


Os desenvolvedores não estavam particularmente preocupados com a invenção de suas abordagens astutas e reuniram todos os métodos populares de trabalhar com configurações sob o teto de uma.


  • Você pode ler arquivos (.json, .ini, yaml e o novo .toml, que também vale a pena conhecer)
  • Você pode selecionar variáveis ​​de ambiente e arquivos .env
  • Você pode usar armazenamento e serviços externos (do Redis simples ao armazenamento seguro especial com senhas)
  • Tudo isso se funde com sucesso com as configurações dos frameworks Flask e Django.

E, é claro, no topo adicionamos um conjunto de bolos que facilita a vida em qualquer projeto


  • Ambientes de comutação fáceis dev / teste / teste / produção.
  • As configurações padrão.
  • Ativar e desativar recursos no código (profissionais de marketing, gerentes de produto e testadores ficarão felizes).
  • Um utilitário de console que permite alterar as configurações do projeto rapidamente, sem tocar no código.

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


All Articles