Verständnisproblem "g" in Flask

Django, Flask, Bottle, WSGI, CGI…
Antworten
sprudel
User
Beiträge: 250
Registriert: Donnerstag 8. März 2007, 17:12

Hallo, ich habe ein kleines Verständnisproblem.

Ich möchte gerne meiner Anwendung eine Weboberfläche hinzufügen, und habe mich für Flask entscheiden. Meine Vorstellung von g war, dass dies während der gesamten Applikationssitzung als Objekt zu gebrauchen ist, in dem ich dann meine aktuellen Objekte (zum Beispiel transaction, etc.) speichern würde. So ähnlcih wie eben bei einer lokalen App, wo man acuh während der gesamten Laufzeit Daten speichern kann.

Scheinbar ist dies aber jetzt nicht so. Gibt es denn eine andere Möglichkeit, ein einziges Objekt während der gesamten Laufzeit verfügbar zu haben?

Würde mich über eine Antwort sehr freuen.

Liebe Grüße
Chris
BlackJack

@sprudel: Wirklich garantiert würde ich mal vermuten nein.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

flask.g gilt nur für den aktuellen Request. Die Laufzeit, bei WSGI Anwendungen, entspricht im Zweifel auch nur einem Request, wobei sie üblicherweise länger dauern kann. Die Anwendung kann in mehreren Threads verwendet werden, möglicherweise nutzt der Server auch mehrere Prozesse oder es laufen sogar mehrere Server auf möglicherweise unterschiedlichen (virtuellen) Maschinen.

Insofern musst du dir überlegen in welchem Kontext diese Objekte die du speichern willst relevant sind und ob du sie nur für einen oder mehrere Requests, für einen User oder für die gesamte Webanwendung brauchst. Dementsprechend würdest du sie in flask.g, irgendwo global (threadsafe), in der Session oder in einer Datenbank speichern.
Antworten