2017-03-14 1 views
4

Ich möchte eine Flask-Erweiterung erstellen, die von einer anderen Flask-Erweiterung abhängig ist. Um zu argumentieren, sagen Sie, dass es Flask-Foo ist, und dass es Flask-Redis benötigt, um bestimmte Daten in einer Redis-Datenbank zu speichern.Wie soll ich eine Flask-Erweiterung erstellen, die von einer anderen Erweiterung abhängt?

Ich weiß, dass ich Flask-Redis eine Installationsabhängigkeit hinzufügen kann. Allerdings verstehe ich nicht, wie ich Flask-Redis instanziieren und initialisieren soll.

  1. Der Aufbau für flaschen Foo setzt das Kolben-Redis Objekt auf. Der Nachteil davon ist, dass angenommen wird, dass die App Flask-Redis nicht aus irgendeinem anderen Grund verwendet, der explizit außerhalb von Flask-Foo konfiguriert wurde. Wenn dies der Fall ist, erhalten wir zwei Objekte, die Seite an Seite existieren, was falsch erscheint.

  2. Der Benutzer muss Flask-Redis instanziieren und konfigurieren. Flask-Foo überprüft, ob es für diese App initialisiert wurde und klagt andernfalls. Das Problem dabei ist, dass es dem Anwender vorschriftsmäßig vorkommt - warum sollten sie Flask-Redis auf Flask-Foo einstellen müssen, wenn sie kein anderes Wissen oder Interesse an der Konfiguration von Flask-Redis haben? Fordern wir auch keine Probleme auf, wenn dies bedeutet, dass Flask-Foo.init_app() immer nach Flask-Redis.init_app() angerufen werden muss?

  3. Verwenden Sie keine Flask-Redis. Verwenden Sie das Redis-Paket direkt und verwalten Sie die Verbindung in Flask-Foo-Code. Dies würde wahrscheinlich die obigen Probleme vermeiden. Aber es scheint unelegant - wir werden im Grunde genommen Probleme lösen müssen, die von Flask-Redis gelöst wurden. Wenn Flask-Foo weiterhin eine alternative Datenbank unterstützt, wird es kompliziert, da wir einen Code zur Verwaltung der verschiedenen Arten von Verbindungen pflegen müssen.

Nur klar zu sein, ist dies nicht eine Frage speziell über Flask-Redis oder, wie es funktioniert! Ich möchte nur verstehen, was im Allgemeinen der richtige Weg ist, um eine Erweiterung auf einer Erweiterung zu bauen.

Antwort

0

Flask Erweiterung hat die gleiche Struktur wie ein Python-Modul. Sie sollten alle Anforderungen in der Datei setup.py angeben. Zum Beispiel flask-babel

install_requires=[ 
    'Flask', 
    'Babel>=2.3', 
    'Jinja2>=2.5' 
], 
+0

Vielen Dank für Ihre Antwort! Ich verstehe diesen Teil. Was ich weniger sicher bin, ist, wie das Modul und seine Abhängigkeiten initialisiert werden sollen. – jwg

Verwandte Themen