2009-07-13 3 views
2

Ich möchte eine eindeutige Kennung für jeden Browser verfolgen, der eine Verbindung zu meiner Webanwendung herstellt (in Pylons geschrieben). Ich behalte einen Cookie auf dem Client, um dies zu verfolgen, aber wenn der Cookie nicht vorhanden ist, dann Ich möchte einen neuen eindeutigen Bezeichner generieren, der mit der Antwort zurück an den Client gesendet wird, aber ich möchte möglicherweise auch auf diesen Wert von anderem Code zugreifen, der zum Generieren der Antwort verwendet wird.Was kann ich an Pylonen.Anfrage in Pylonen anhängen?

Wird dieser Wert an pylons.request sicher angehängt? Oder muss ich threading_local verwenden, um einen lokalen Thread zu erstellen, den ich zurücksetze, wenn jede neue Anfrage bearbeitet wird?

Antwort

3

Warum möchten Sie eine eindeutige Kennung? Grundsätzlich erhält jeder Besucher bereits eine eindeutige Kennung, seine Session. Beaker, Pylons-Sitzung und Caching-Middleware, erledigt die ganze Arbeit und verfolgt Besucher, normalerweise mit einem Session-Cookie. Es ist also nicht wichtig, Benutzer zu verfolgen, verwenden Sie einfach die Session, für die sie erstellt wurde, um alle benutzerspezifischen Dinge zu speichern.

from pylons import session 
session["something"] = whatever() 
session.save() 

# somewhen later 
something = session["something"] 
0

Was auch immer Sie für die Anfrage festgelegt haben, bleibt nur für die Dauer der Anfrage bestehen. Das Problem, das Sie beschreiben, wird besser mit einer Sitzung behandelt, wie TCH4k gesagt hat. Es ist bereits in der Middleware aktiviert, also mach weiter.