データベースに登録されたセッションデータは、自動的には削除されません。
失効したセッションデータがどんどん溜まっていきます。
セッションデータをデータベースから削除するのは開発者の責任になります。
Djangoにはセッションをクリーンアップするサンプルプログラムが django/bin/daily_cleanup.py に用意されています。
django/bin/daily_cleanup.py
#!/usr/bin/env python
"""
Daily cleanup job.
Can be run as a cronjob to clean out old data from the database (only expired
sessions at the moment).
"""
from django.core import management
if __name__ == "__main__":
management.call_command('cleanup')
実際の処理は django/core/management/commands/cleanup.py にあります。
django/core/management/commands/cleanup.py
import datetime
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
help = "Can be run as a cronjob or directly to clean out old data from the database (only expired sessions at the moment)."
def handle_noargs(self, **options):
from django.db import transaction
from django.contrib.sessions.models import Session
Session.objects.filter(expire_date__lt=datetime.datetime.now()).delete()
transaction.commit_unless_managed()