Ich beginne diese Frage mit dem Hinweis, dass ich sehr neu in der Webentwicklung bin.
Nun zum Punkt: Ich habe vor kurzem eine ziemlich kleine Flask
-Anwendung erstellt, die Daten lädt und dann Visualisierungen mit bokeh
ausgibt. Und als solches wird es ziemlich viele Daten im Speicher (ca. 10-20 MB) gespeichert werden müssen. Dies ist an sich kein echtes Problem, jedoch gibt die Anwendung die Objekte im Speicher nicht frei, nachdem die Ansichtsfunktionen die Anforderungen gesendet haben. Das bedeutet, dass die App nach wenigen Anwendungen den größten Teil des Speichers verbraucht hat.
Meine Frage lautet daher: Wie erzwinge ich Flask
, um die benutzten Objekte freizugeben, nachdem die View-Funktionen irgendwelche Anfragen zurückgeschickt haben? Oder gehe ich dieses Problem falsch an? Es könnte erwähnenswert sein, dass ich den eingebauten Server von Flask
verwende, da wir immer noch nur Prototypen erstellen.
¨
Danke, Tingis
BEARBEITEN Hier ist eine meiner Ansichtsfunktionen. Was es tut, ist, dass es Daten aus einer Datenbank mit SQLAlchemy
lädt und dann einige Zeitreihenmanipulationen durchführt (wie eine Kerneldichteschätzung und Berechnung der kumulativen Rendite) und eine verknüpfte div
und script
Zeichenkette von bokeh
ausgibt. Zahl, die die Variablen sind, die mit _plt
enden.
Hilft das?
BEARBEITEN 2 Ich habe die Lösung ausprobiert, die im Folgenden bereitgestellt wurde: Frage , indem nach jedem Aufruf der Plot-Schnittstelle ein gc.collect()
hinzugefügt wird, sowie die Funktion
Aber die Erinnerung ist immer noch nicht freigegeben.
Ist es möglich, dass Sie einen zirkulären Verweis zwischen get_session
und dem Company-Objekt erstellen?