Removing sessions from Redis (Django) -


i'm using django , redis session engine (also celery, else). works , can see improvement in speed.

session_engine = 'django.contrib.sessions.backends.cached_db' 

i have script runs every minute check active users through methods , if user hasn't been active in latest minute, session gets removed. done customer's tracking needs.

this script working until switched redis session engine. session gets indeed removed db not redis. i'm not using django built-in method own function:

def clean_sessions():     stored_sessions = session.objects.all()     active_users = active_users(minutes=1)     active_users_ids = [user.id user in active_users]     session in stored_sessions:         session_uid = session.get_decoded().get('_auth_user_id')         if not session_uid:             session.delete()             continue         if session_uid not in active_users_ids:             user = user.objects.get(pk=session_uid)             ## code between ##             session.delete() 

my question is, how remove session cache well, user logged out?

it wasn't straightforward able fix it. imported file have clean_sessions():

from importlib import import_module django.conf import settings 

then, inside function, loaded sessionstore object:

sessionstore = import_module(settings.session_engine).sessionstore 

from there, easy remove sessions, leaving method this:

def clean_sessions():     stored_sessions = session.objects.all()     active_users = request.objects.active_users(seconds=15)     active_users_ids = [user.id user in active_users]     session in stored_sessions:         sessionstore = import_module(settings.session_engine).sessionstore         s = sessionstore(session_key=session.session_key)         session_uid = session.get_decoded().get('_auth_user_id')         if not session_uid:             s.delete()             continue         if session_uid not in active_users_ids:             ## code ##             s.delete() 

it's important load right sessionstore whatever session engine you're using, otherwise fail remove both places (db , cache).


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -