Kleine Freude # 5: Dynaconf - Verwalten der Einstellungen im Projekt

Einige Fragen in der Welt der Grubenhausentwicklung haben die magische Kraft, ganze Armeen von Menschen zu erheben, sie in einen heiligen Krieg zu führen und sie zu zwingen, sich mit ganzen Haufen von Argumenten, Berechnungen und Code-Stücken ineinander zu werfen. Manchmal, wenn die Auseinandersetzungen enden, ziehen die kriegführenden Armeen schnell in die Kriegsführung, indem sie Haufen verbaler Exkremente werfen.


Beliebte Themen sind:


  • Soll ich dieses Projekt überhaupt in Python schreiben?
  • Welchen Rahmen für die Entwicklung?
  • Wer ist schneller, Bibliothek X oder Bibliothek Y?

Heute werde ich versuchen, nur eines dieser magischen Themen vorsichtig auszuwählen - die Frage "Wie verwalte ich Konfigurationen in einem Projekt?".



Natürlich gibt es viele Möglichkeiten, ein Live-Programm zu konfigurieren.


  • Umgebungsvariablen (zusammen mit .env- Dateien auf dem Heap).
  • Alle Arten von spezialisierten Dateien in den Formaten yaml, json, xml, ini.
  • * .py- Dateien mit Klassen oder "Konstanten".
  • configparser aus der Python-Standardbibliothek.
  • Selbstgeschriebene Lösungen basierend auf Klassen, Modulen, Dateien, Telepathie, schwarzer Magie (oder allen zusammen).
  • In das Framework integrierte Konfigurationsmanager (wie z. B. in Flask).

Es gibt genug Möglichkeiten, Sie können alles auswählen und verwenden. Aber der Fortschritt würde aufhören, wenn die Menschen nicht versuchen würden, alles hintereinander zu verbessern und zu optimieren (einschließlich etwas, das schon lange funktioniert und von akzeptabler Qualität ist). Die Hände von Enthusiasten erreichten schließlich die Konfigurationen von Python-Anwendungen.


Da war also Dynaconf


Die Entwickler waren nicht besonders besorgt über die Erfindung ihrer gerissenen Ansätze und sammelten alle gängigen Methoden, um mit Einstellungen unter einem Dach zu arbeiten.


  • Sie können Dateien lesen (.json, .ini, yaml und die neu gefangene .toml, die es ebenfalls wert ist, kennengelernt zu werden).
  • Sie können Umgebungsvariablen und .env-Dateien abrufen
  • Sie können externen Speicher und Dienste verwenden (von einfachen Redis bis hin zu speziellen sicheren Speichern mit Kennwörtern).
  • All dies verschmilzt erfolgreich mit den Konfigurationen der Flask- und Django-Frameworks.

Und natürlich haben wir oben eine Reihe von Brötchen hinzugefügt, die das Leben in jedem Projekt einfacher machen


  • Einfache Umschaltumgebungen Entwicklung / Staging / Test / Produktion.
  • Die Standardeinstellungen.
  • Ein- und Ausschalten von Funktionen im Code (Vermarkter, Produktmanager und Tester werden sich freuen).
  • Ein Konsolendienstprogramm, mit dem Sie Projekteinstellungen im laufenden Betrieb ändern können, ohne den Code zu berühren.

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


All Articles