Seite 1 von 1

Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 11:19
von HeAdLeSs
Hallo zusammen.

Ich bastel gerade an einem Smart Home Projekt. Für die Weboberfläche arbeite ich mit Flask.
Soweit ich das 'sehe' läuft die Flask Applikation immer durch. Der Thread wird nicht beendet.
Da ich auch mit Ajax arbeite kommen da schnell recht viele Datenbankabfragen zusammen (besonders wenn mehrere Clients auf die Weboberfläche zugreifen).

Mein Gedanke ist: Um die Datenbank zu entlasten würde ich gern Werte in einer Variable hinterlegen. Da Flask nun ja durchgehend läuft ist meine Frage: Gibt es irgendwie eine Möglichkeit eine Variable dauerhaft verfügbar zu machen? Immer (solange der Server nicht beendet/neugestartet wird) und für jeden.

Sessions sind auf einen Client beschränkt. g wohl nur für einen Request.
Ich möchte gern eine Variable im Speicher halten, egal wer die App aufruft.

Ist das irgendwie möglich?

Re: Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 12:03
von Sirius3
@HeAdLeSs: wenn Du Glück hast, macht das die Datenbank schon für Dich. Hast Du Geschwindigkeitsprobleme?

Re: Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 12:07
von snafu
HeAdLeSs hat geschrieben:Gibt es irgendwie eine Möglichkeit eine Variable dauerhaft verfügbar zu machen?
Mit Variablen sollte man das nicht tun. Meintst du vielleicht Konstanten?

Re: Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 12:27
von HeAdLeSs
@Sirius3
Manchmal schon. Wobei es nicht nur an der Datenbank liegt. Aber sie wird schon recht stark beansprucht.
Wie finde ich raus ob sie das schon macht?

@snafu
Soweit ich mich erinnere ist eine Konstante nicht veränderbar (sagt ja eigentlich der Name schon). Ich muss die Daten später jedoch auch aktualisieren können. Sonst müsste ich sie ja wieder aus der Datenbank holen (zum Aktualisieren) und dann wäre es ja wieder sinnlos.

Re: Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 12:46
von __deets__
Was du suchst nennt sich ein Cache. Das kann man machen, ist aber ein of unterschätzes Risiko. Denn zu entscheiden, was wann wie lange gecacht wird ist kompliziert & fehlerträchtig.

Ich würde eher versuchen die Engstellen zu optimieren. Vor allem weil ich mir bei deinem Projekt nicht vorstellen kann, was da wirklich zu viel sein sollte.

Re: Variable die immer da bleibt

Verfasst: Mittwoch 8. November 2017, 20:35
von noisefloor
Hallo,

gängig als Cache ist heute z.B. Redis, memcached ist eine Option (die früher populärer war).

Was du bedenken muss: wenn du einen wie auch immer gearteten Cache nutzt muss du noch Mechnismen einbauen, die den Cache leeren, wenn die DB aktualisiert wurde. Das kann relativ komplex werden, siehe Post von __deets__.

Wenn du eine DB nutzt, die Ergebnisse von Queries cacht, fährst du wahrscheinlich besser. AFAIK macht PostgreSQL das standardmäßig.

Auf welcher Hardware läuft das ganze? Auf einem Raspi?

Gruß, noisefloor