mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 22:43:42 +00:00
Refill the Session cache after restarting the server.
The fact that we were dumping this cache and not refilling it seems to be one of the causes of Tornado restarts being a lot slower on prod than on local systems. (imported from commit a32a759f4dfb591706ede1cce2d38f5c3704193c)
This commit is contained in:
@@ -3,11 +3,14 @@ from __future__ import absolute_import
|
||||
# This file needs to be different from cache.py because cache.py
|
||||
# cannot import anything from zephyr.models or we'd have an import
|
||||
# loop
|
||||
from django.conf import settings
|
||||
from zephyr.models import Message, UserProfile, Stream, get_stream_cache_key, \
|
||||
Recipient, get_recipient_cache_key, Client, get_client_cache_key, \
|
||||
Huddle, huddle_hash_cache_key
|
||||
from zephyr.lib.cache import cache_with_key, djcache, message_cache_key, \
|
||||
user_profile_by_email_cache_key, user_profile_by_id_cache_key
|
||||
from django.utils.importlib import import_module
|
||||
from django.contrib.sessions.models import Session
|
||||
import logging
|
||||
from django.db import connection
|
||||
|
||||
@@ -39,6 +42,11 @@ def huddle_cache_items(items_for_memcached, huddle):
|
||||
def recipient_cache_items(items_for_memcached, recipient):
|
||||
items_for_memcached[get_recipient_cache_key(recipient.type, recipient.type_id)] = (recipient,)
|
||||
|
||||
session_engine = import_module(settings.SESSION_ENGINE)
|
||||
def session_cache_items(items_for_memcached, session):
|
||||
store = session_engine.SessionStore(session_key=session.session_key)
|
||||
items_for_memcached[store.cache_key] = store.decode(session.session_data)
|
||||
|
||||
# Format is (objects query, items filler function, timeout, batch size)
|
||||
#
|
||||
# The objects queries are put inside lambdas to prevent Django from
|
||||
@@ -53,6 +61,7 @@ cache_fillers = {
|
||||
'message': (lambda: Message.objects.select_related().all().order_by("-id")[0:MESSAGE_CACHE_SIZE],
|
||||
message_cache_items, 3600 * 24, 1000),
|
||||
'huddle': (lambda: Huddle.objects.select_related().all(), huddle_cache_items, 3600*24*7, 10000),
|
||||
'session': (lambda: Session.objects.all(), session_cache_items, 3600*24*7, 10000),
|
||||
}
|
||||
|
||||
def fill_memcached_cache(cache):
|
||||
|
||||
Reference in New Issue
Block a user