Seite 1 von 1
CherryPy / Turbogears: Globale Variable (für alle user)
Verfasst: Donnerstag 17. Mai 2007, 10:44
von joker
Hallo,
ich habe folgendes Problem: Ich schreibe gerade eine Anwendung, bei der es eine Pool an bestimmten Resourcen gibt.
Wenn eine Resource belegt ist, will ich irgendwo ein flag setzten. Auf dieses Flag müssen aber alle Benutzer zugriff haben. Möchte nicht auf die Datenbank ausweichen da im Worst Case dieses flag alle paar Sekunden abgefragt werden muss.
Wie kann ich in TG/CherryPy eine solche Globale Variable (z.B. eine dictonary) erstellen?
Vielen Dank
Verfasst: Donnerstag 17. Mai 2007, 13:50
von jens
Ich hab keine Ahnung von TG/CherryPy... Wenn du nicht die DB nutzten willst, dann schreib doch die Daten in eine Datei... Einfach und schnell wäre eine Liste mit einem bestimmen Platzhalter, also damit man z.B. nur
"#".join(daten) beim schreiben und
daten.split("#") beim lesen machen muß... Das sollte recht schnell gehen...
Dumm ist allerdings, wenn gleichzeitig mehrere Leute in die Datei schreiben wollen

Verfasst: Donnerstag 17. Mai 2007, 14:01
von joker
Ne, Datei ist noch ungeigneter. Das problem ist, das es sein kann, das extrem viele Anfragen kommen, ob nun eine ressource frei ist.
Und immer ein DB-Statement absetzten ist nicht so der hit. Werd das aber erstmal so realisieren. Am anfang sind es noch wenig Nutzer -> wenig abfragen. Und dann muss ich mal weiter schauen.
mfg
joker
Re: CherryPy / Turbogears: Globale Variable (für alle user)
Verfasst: Donnerstag 17. Mai 2007, 14:29
von thelittlebug
joker hat geschrieben:Möchte nicht auf die Datenbank ausweichen da im Worst Case dieses flag alle paar Sekunden abgefragt werden muss.
Ich würd mir die Sorgen erst machen wenn im tatsächlichen Fall jede Sekunde hunderte male darauf zugegriffen wird und es merkbar die Performance beeinträchtigt.
Zu frühes Optimieren kann ein K.O. für ein Projekt werden.
p.s. SQL Datenbanken können auch cachen
lgherby
Verfasst: Donnerstag 17. Mai 2007, 17:20
von mitsuhiko
Das was du da willst nennt man locking. Schau dich mal im threading modul um.