Wie funktioniert das Tool?

Python: Dynaconf soll die Konfiguration für neue Projekte vereinfachen
Keine Kommentare

Für neue Python-Projekte kann ein größerer Konfigurationsaufwand anfallen. Neben Einstellungen für verschiedene Umgebungen und dem Ablageort für wichtige Werte müssen noch weitere Parameter berücksichtigt werden. Das quelloffene Tool Dynaconf soll diese Arbeit erleichtern.

Anstatt Einstellungen an unterschiedlichen Orten in einem Projekt zu hinterlegen, oder sie nur umständlich abrufbar zu machen, können sie mit Dynaconf in einer zentralen Konfigurationsdatei bereitgestellt werden. Standardmäßig werden hierfür die Formate .py, .toml, .ini und .json unterstützt. Wenn PyYAML installiert ist, werden auch .yaml-Files gelesen.

Um die Konfigurationsdatei nach der Entwicklung auch in der Produktion weiterverwenden zu können, erlaubt Dynaconf innerhalb eines Files die Spezifikation von Settings für verschiedene Umgebungen. Ist ein Block mit [development], [testing] oder [production] gekennzeichnet, ist klar, für welche Umgebung die darunter notierten Einstellungen gedacht sind. Daneben können unter [default] auch umgebungsübergreifende Vorgaben gemacht werden. Listing 1 zeigt, wie Settings.toml aussehen könnte (Quelle: GitHub).

# When ENV_FOR_DYNACONF=TESTING
[testing]
environment = "this is testing from toml"
host = "test_server.com from toml"
works = 'only_in_test'

# When ENV_FOR_DYNACONF=DEVELOPMENT
[development]
environment = "this is development from toml"
host = "dev_server.com from toml"
works = 'only_in_dev'

Dynaconf und sensible Daten

Das Team hinter dem Projekt rät davon ab, Passwörter, Zugangsschlüssel und andere sensible Informationen in der Konfiguration zu speichern. Für das Handling solcher Daten kann das Tool mit entsprechenden Secrets-Dateien umgehen. Analog zu settings.toml wäre dies dann .secrets.toml. Wenn sich dieses File im Gitignore-Verzeichnis befindet, wird es auch nicht versehentlich in ein (öffentliches) Repository hochgeladen. Außerdem werden Informationen aus einem Secrets-File im Rahmen eventueller Debugging-Ausgaben nur verschleiert dargestellt.

ML Conference 2019

Deep learning advances for signal processing

with Oleksandr Honchar (Mawi Solutions)

Towards meaningful AI

with Imola Fodor (Electrolux)

Support für Django und Flask

Support für die beiden beliebten Python-Frameworks Django und Flask ist durch entsprechende Extensions gegeben. Die Extensions lassen sich mit kurzen Code-Stücken einbinden. Innerhalb der Konfigurationsdatei muss die entsprechende Notation vorgenommen werden, damit das Framework genutzt werden kann. Die Listings 2 und 3 dienen als Beispiel für die Verwendung von Flask mit YAML. In Listing 2 wird eine settings.yml gezeigt, Listng 3 stellt die zugehörige app.py dar (Quelle: GitHub).

default:
  DEBUG: true
  SERVER: flaskdynaconf.com
  PORT: 6666
  MESSAGE: Dynaconf works like a charm with Flask and YAML
  TEST_RULE: /flask_with_yaml
development:
  DEBUG: true
  SERVER: dev.flaskdynaconf.com
production:
  DEBUG: false
  SERVER: prod.flaskdynaconf.com
from flask import Flask
from flask import render_template

from dynaconf import FlaskDynaconf


# create your app
app = Flask(__name__)

FlaskDynaconf(app)


@app.route("/")
def index():
    return render_template("dynaconf.html")


app.add_url_rule(app.config.TEST_RULE, view_func=lambda: "test")


if __name__ == "__main__":
    app.run()

Dynaconf liegt aktuell in Version 2.0.0 vor und steht unter MIT-Lizenz. Die Leitung der Entwicklung liegt bei Bruno Rocha (Quality Engineer, Red Hat). Weitere Informationen über das Projekt stehen im zugehörigen Repository auf GitHub sowie in einer von Rocha verfassten Projektvorstellung auf dev.to zum Abruf bereit.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -