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?
Variable die immer da bleibt
@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.
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.
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.
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.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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