django-raw-clearsessions

Efficiently clear expired sessions from the database.


License
MIT
Install
pip install django-raw-clearsessions==0.1

Documentation

django-raw-clearsessions

By default, Django's cached_db and db session backends loop through deleted sessions in order to trigger pre/post delete signal handlers. This can be extremely slow and consume a lot of CPU and memory on sites with a lot of sessions.

This package provides a SessionStoreMixin class and alternative cached_db and db backends that use the private _raw_delete() method, which is much faster and consumes much less CPU and memory, but does not trigger pre/post delete signal handlers.

Usage

Add to your settings:

SESSION_ENGINE = 'django_raw_clearsessions.cached_db'

Or:

SESSION_ENGINE = 'django_raw_clearsessions.db'

Or:

# mybackend.py
from some.package import some_backend
from django_raw_clearsessions import SessionStoreMixin


class SessionStore(SessionStoreMixin, some_backend.SessionStore):
    pass

# settings.py
SESSION_ENGINE = 'mybackend'

Execute the Django clearsessions management command:

$ python manage.py clearsessions