From 095ceef45a8360bbcbe205564be73969e901dcf9 Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Wed, 20 Mar 2013 19:45:39 -0700 Subject: [PATCH] Adding redis session pool and migration script for sessions. --- settings.py | 1 + utils/bootstrap_redis_sessions.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 utils/bootstrap_redis_sessions.py diff --git a/settings.py b/settings.py index c6d89ccfb..cc53e3e69 100644 --- a/settings.py +++ b/settings.py @@ -544,6 +544,7 @@ MONGOANALYTICSDB = connect(MONGO_ANALYTICS_DB.pop('name'), **MONGO_ANALYTICS_DB) REDIS_POOL = redis.ConnectionPool(host=REDIS['host'], port=6379, db=0) REDIS_STORY_POOL = redis.ConnectionPool(host=REDIS['host'], port=6379, db=1) REDIS_ANALYTICS_POOL = redis.ConnectionPool(host=REDIS['host'], port=6379, db=2) +REDIS_SESSION_POOL = redis.ConnectionPool(host=REDIS['host'], port=6379, db=5) JAMMIT = jammit.JammitAssets(NEWSBLUR_DIR) diff --git a/utils/bootstrap_redis_sessions.py b/utils/bootstrap_redis_sessions.py new file mode 100644 index 000000000..feb08babe --- /dev/null +++ b/utils/bootstrap_redis_sessions.py @@ -0,0 +1,17 @@ +import math +import redis +from django.conf import settings +from django.contrib.sessions.models import Session + +sessions_count = Session.objects.count() +print " ---> %s sessions in Django" % sessions_count +batch_size = 100 +r = redis.Redis(connection_pool=settings.REDIS_SESSION_POOL) + +for batch in range(int(math.ceil(sessions_count / batch_size))+1): + start = batch * batch_size + end = (batch + 1) * batch_size + print " ---> Loading sessions #%s - #%s" % (start, end) + for session in Session.objects.all()[start:end]: + _ = r.set(session.session_key, session.session_data) + _ = r.expire(session.session_key, session.expire_date.strftime("%s")) \ No newline at end of file