Löschen des Sitzungsschlüssels von allen Benutzern

8

Wenn sich ein Benutzer anmeldet, werden einige Details in der Sitzung gespeichert, beispielsweise mit key = 'user_settings'

Wenn einige Aktualisierungen innerhalb des Systems stattfinden, muss ich alle Benutzer durchlaufen und den Schlüssel 'user_settings' aus jeder Benutzersitzung löschen. Auf diese Weise werde ich das Laden der Details aus der Datenbank auslösen.

Wie kann ich alle Sitzungen durchlaufen und den Schlüssel aus jeder Sitzung entfernen?

    
Mikael 16.06.2015, 10:15
quelle

3 Antworten

11

Schleifen

Auch wenn Ihre Website nur einige tausend Benutzer hat, können Sie feststellen, dass die Tabelle django_sessions einige Millionen Einträge enthält. Dies geschieht, wenn die Sitzungen nicht bereinigt wurden. Wenn Sie sie durchlaufen und die Sitzungseinträge löschen, werden Sie feststellen, dass der Prozess sehr langsam ist. Selbst 100 Sitzungen würden zu 100 Abfragen führen.

Verwenden des Sitzungsmodells.

Sie können Filter auf django.contrib.sessions.models.Session genauso anwenden wie auf jedem anderen Modell. Daher würde die folgende Abfrage alle Sitzungen auf einmal löschen.

%Vor%

Sie können wählen, einige Benutzer nicht zu verwenden

%Vor%

Es handelt sich nicht um einen Datenabruf oder eine Schleife.

./ manage.py

Sie können auch ./manage.py clearsessions verwenden, um abgelaufene Sitzungen zu bereinigen. Unerfahrene werden beibehalten.

Auf Datenbankebene

Vielleicht ist das Fasten das Löschen aller Sitzungen mit einer SQL-Abfrage. Wobei das Abrufen und Löschen sehr sehr langsam ist und Millionen von Abfragen beinhaltet.

Bei Datenbanken, die TRUNCATE unterstützen

%Vor%

Für diejenigen, die nicht

%Vor%

Vergessen Sie nicht, dass Sitzungen von Zeit zu Zeit ablaufen. Es ist also nicht sehr schädlich, ein gesamtes Sitzungsobjekt zu löschen, anstatt nur einen bestimmten Schlüssel zu löschen.

    
e4c5 14.05.2016 01:35
quelle
5

Sie können Sitzungsdaten über das SessionStore-Objekt :

%Vor%     
garnertb 13.05.2016 15:48
quelle
0

Sie können den Schlüssel wie jedes andere Wörterbuch aus der Sitzung löschen.

%Vor%

für weitere Informationen überprüfen Sie dies

How lösche ich einen Sitzungsschlüssel in Django, nachdem er einmal verwendet wurde?

    
Aditya Singh 18.05.2016 11:11
quelle

Tags und Links