2009-07-13 16 views
0

Ich fragte mich, ob ich Django-Sitzungsaufrufe für bestimmte Ansichten beseitigen könnte. Wenn ich beispielsweise ein Formular zum Zurücksetzen des Passworts habe, möchte ich nicht, dass ein Anruf bei der Datenbank nach einer Sitzung sucht oder nicht. Vielen Dank!Eliminierung bestimmter Django-Sitzungsaufrufe

+0

Nicht wirklich eine Antwort auf Ihre Frage, aber wenn Sie über die Sitzungsleistung besorgt sind, schneiden Sie den mittleren Mann und verwenden memcached. Dann machen Sie sich nie Sorgen über Anrufe in der Sitzung. http://docs.djangoproject.com/en/dev/topics/http/sessions/#configuring-the-session-engine –

+0

Gibt es einen Nachteil für die Verwendung von Memcached im Gegensatz zur Verwendung der DB für Sitzungen? – xtrahotsauce

Antwort

1

Sitzungen werden langsam geladen: Wenn Sie die Sitzung während einer Anfrage nicht verwenden, lädt Django sie nicht.

Dazu gehört request.user: Wenn Sie darauf zugreifen, greift es auf die Sitzung zu, um den Benutzer zu finden. (Es lädt träge, auch - wenn Sie nicht auf request.user zugreifen, wird es auch nicht auf die Sitzung zugreifen.)

Also, herauszufinden, was auf die Sitzung zugreifen und es beseitigen - und wenn Sie können 't, zumindest wirst du wissen, warum die Sitzung eingezogen wird.

+0

Wissen Sie, wie Sie nach Sitzungsaufrufen suchen können, ohne etwas wie Django-Logging zu verwenden? Das ist, was ich gerade zum Überprüfen von SQL-Aufrufen verwende und ich weiß nicht, ob der Sitzungsaufruf für die Django-Protokollierung oder für die eigentliche Anwendung ist. Ich habe den Sitzungsaufruf beendet, aber es scheint immer noch abgefragt zu werden. – xtrahotsauce

+1

Wenn es Ihnen nichts ausmacht, die Django-Quelle temporär zu hacken (was ich im Allgemeinen als unvermeidlich empfinde), editieren Sie django.contrib.sessions.backends.base.SessionBase._get_session und lassen Sie sie beim Aufruf von load() ein Backtrace ausgeben. Das wird Ihnen schnell sagen, wer Sitzungsladungen auslöst. –