сигналы Джанго очень удобны:
# this is in a models.py file
from django.db.models.signals import pre_delete
from django.contrib.sessions.models import Session
def sessionend_handler(sender, **kwargs):
# cleanup session (temp) data
print "session %s ended" % kwargs.get('instance').session_key
pre_delete.connect(sessionend_handler, sender=Session)
вам необходимо регулярно удалять сеансы, так как они могут оставаться в базе данных, если пользователь не нажимает кнопку «Выйти», что наиболее часто встречается. просто добавьте это в cron:
*/5 * * * * djangouser /usr/bin/python2.5 /home/project/manage.py cleanup
Также я обычно добавляю это в файл manage.py для облегчения поиска пути settings.py:
import sys
import os
BASE_DIR = os.path.split(os.path.abspath(__file__))[0]
sys.path.insert(0, BASE_DIR)
SESSION_EXPIRE_AT_BROWSER_CLOSE работает, но влияет только на куки-файлы клиента, а не на сеансы активных серверов IMHO.