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?
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.
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.
Sie können wählen, einige Benutzer nicht zu verwenden
%Vor%Es handelt sich nicht um einen Datenabruf oder eine Schleife.
Sie können auch ./manage.py clearsessions
verwenden, um abgelaufene Sitzungen zu bereinigen. Unerfahrene werden beibehalten.
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.
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?
Tags und Links django django-sessions