2012-08-12 7 views
6

Ich finde es ziemlich verwirrend, was genau sind die Unterschiede in der Verwendung von Flask before_request() und/oder after_request() im Vergleich zu einer WSGI-Middleware.flask: wsgi-middleware vs before_ und after_request()

sagen, dass ich etwas sehr dumm, so zu tun:

  • Jeder Wunsch-Körper sollte für das Wort „Speck“ und ersetzt mit „Eier“ ​​gescannt werden.
  • Jetzt Anfrage trifft Kolben-Ansicht (nach URL-Mapping), View-Funktion erzeugt die Reaktion
  • Jeder Antwort-Körper für "Eier" gescannt werden soll und mit "Speck"

Would ersetzt Ich benutze eine WSGI-Middleware oder die Flask-Funktionen? Da ich von Django mit einer sehr robusten Middleware-Suite komme, ist mir der Unterschied nicht klar.

Vielen Dank im Voraus. berni

Antwort

8

Eigentlich haben Sie genau die gleiche Wahl in Django. Django basiert teilweise auf WSGI, so dass Sie theoretisch auch WSGI Middleware oder Django Middleware in Django schreiben könnten. Der Grund dafür, dass Sie keine Verwirrung haben, liegt darin, dass die Django-Community Entwickler normalerweise von der WSGI-Middleware abhält. Ein Grund liegt in der Tatsache, dass Django so konzipiert wurde, dass er gleichermaßen auf mod_python und WSGI funktioniert. Durch die Verwendung der Django-Middleware funktioniert Ihre Middleware auf beiden Systemen (siehe this post by James Bennett).

Ein Vorteil beim Erstellen einer WSGI-Middleware ist, dass sie in mehreren Frameworks verwendet werden kann. Beispielsweise ist Beaker eine Sitzung und Caching-WSGI-Middleware, die in jedem WSGI-Framework verwendet werden kann. Wenn es speziell in Flask geschrieben wäre, könnten Pyramid-Entwickler es nicht verwenden. Der Maintainer der Bibliothek hat speziell dafür gesorgt, dass die Bibliothek in mehreren Frameworks arbeiten kann, also schrieb er sie als WSGI-Bibliothek.

Im Grunde ist dies, wie ich meine Entscheidung treffen würde:

  1. Wenn Sie nur eine Middleware zu schreiben, die etwas spezifisch für Ihre Anwendung der Fall ist, verwenden Sie die Middleware Ihres Rahmens.
  2. Wenn Sie glauben, dass Ihre Middleware in einigen Ihrer Apps nützlich ist und anderen Benutzern hilfreich sein kann, verwenden Sie immer noch die Middleware Ihres Frameworks (was Flask wirklich als "Erweiterung" bezeichnet). Als Beispiel sehen Sie Flask-SQLAlchemy.
  3. Wenn sich die Leute wirklich für Ihre Middleware interessieren und bereit sind zu helfen, sollten Sie sie in eine WSGI-Middleware-Bibliothek konvertieren, damit sie in anderen Frameworks verwendet werden kann.
+0

große Antwort - danke markieren! – bmaeser

Verwandte Themen