CherryPy / Turbogears: Globale Variable (für alle user)

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
joker
User
Beiträge: 2
Registriert: Mittwoch 16. Mai 2007, 20:56

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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 ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
joker
User
Beiträge: 2
Registriert: Mittwoch 16. Mai 2007, 20:56

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
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Das was du da willst nennt man locking. Schau dich mal im threading modul um.
TUFKAB – the user formerly known as blackbird
Antworten