Introdução ao dynaconf

Adriano A. Santos
2 min readNov 2, 2018

--

Olá, pessoal. Tudo em paz? Espero que sim.

Recentemente eu me deparei com a necessidade de acessar variáveis de configuração. Porém, não bastava criar um arquivo específico de configuração, mas implementar hierarquia e, também, regras bem definidas de configuração. Foi daí que eu conheci o dynaconf. (https://dynaconf.readthedocs.io).

Segundo o próprio site…

o dynaconf é um sistema de configuração em camadas para aplicativos Python. E é muito prático, fácil e inteligente.

… neste post, por exemplo, falarei de forma bem objetiva sobre como você pode utilizar em seu projeto. Se você desejar se aprofundar sobre o tema (e eu aconselho), sugiro que você acesse a documentação oficial no site e faça um estudo aprofundado.

Instalação

O processo de instalação segue o padrão python de ser, basta executar o comando (ou equivalente):

pip3 install dynaconf

Importação

Para importar o dynaconf em seu projeto, no arquivo em que você deseja acessar as configurações faça:

from dynaconf import settings

Arquivo de configuração

O dynaconf suporta um conjunto de formatos de arquivos de configuração. Independentemente do formato desejado, ele deve ser chamado de settings e pode ser settings.py, settings.toml, settings.json etc. No projeto que eu compartilharei aqui como exemplo, eu utilizei o settings.json.

Acessando os parâmetros

Para acessar os parâmetros (ou chaves) que você configurou em seu arquivo settings.*, você também dispõe de um conjunto de formas. Digamos que, por exemplo, você tenha uma chave em seu arquivo de configuração chamado de CONFIG e, nele, um subatributo chamado Parameter. Então, uma vez feita a importação do dynaconf conforme já apresentado, basta fazer a chamada em seu código da seguinte forma:

settings.CONFIG.Parameter

Obs: ver as demais formas na documentação do projeto.

Ambientes de trabalho¶

Uma das coisas mais legais do dynaconf (e olhe que eu achei tudo muito legal) é a possibilidade de ter divisões e configurações de ambientes de trabalho. Sendo possível ter configurações específicas para ambientes de development, staging, testing e production.

Ah! Você também pode ter mais de um arquivo de configuração diferente e ainda trabalhar com eles em um único projeto.

Exemplo de uso

No próprio site do dynaconf você encontrará várias formas de utilizá-lo e, ainda, ter acesso a um repositório com aplicações específicas (incluindo com o Flask etc.). Eu, por outro lado, gostaria de disponibilizar um projeto que fiz para resolver um probleminha específico em um dos meus projetos e que o dynaconf foi uma ferramenta fundamental para o que eu precisava. Ele está aqui (https://github.com/adrianosantospb/ServicesWatcher).

Baixe o projeto e veja como eu fiz a utilização do dynaconf. Eu, particularmente, indico fortemente o seu uso.

Grande abraço!

--

--

Adriano A. Santos

Senior Computer Vision Data Scientist at Conception Ro-Main (Quebec — CA). DSc in Computer Science. MTAC Brazil. https://github.com/adrianosantospb