leere Sessions

Entgegen meinen Erwartungen wirft Django dem Programmierer keine Exception um die Ohren, wenn es beim Laden (Unpicklen) der Session-Daten auf irgendeinen Fehler stößt. Stattdessen schluckt es etwaige auftretende Fehler und gibt nur eine leere Session zurück. Wer dann verzweifelt in seinem Code nach der Stelle sucht, die ihm vermeintlich alle Session-Informationen zerstört, ist auf dem Holzweg.

Ursache für dieses Verhalten ist ein try-except-Statement in der Datei "django/contrib/sessions/backends/base.py":

        try:
return pickle.loads(pickled)
# Unpickling can cause a variety of exceptions. If something happens,
# just return an empty dictionary (an empty session).
except:
return {}

Fehler beim Auspacken der Session-Informationen können beispielsweise auftreten, wenn Objekt-spezifischer Pickle-Code in __setstate__/__getstate__/__reduce__ nicht fehlerfrei funktioniert.

Tags: Django