Skip to content

Commit 6d74a83

Browse files
committed
Caching of the latest document view work. May add database stress to other views. Commit ready for merge.
- Legacy-Id: 19489
1 parent c0cbb79 commit 6d74a83

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

ietf/doc/utils_search.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ def fill_in_telechat_date(docs, doc_dict=None, doc_ids=None):
2424
seen = set()
2525
for e in TelechatDocEvent.objects.filter(doc__id__in=doc_ids, type="scheduled_for_telechat").order_by('-time'):
2626
if e.doc_id not in seen:
27-
d = doc_dict[e.doc_id]
28-
d.telechat_date = wrap_value(d.telechat_date(e))
27+
#d = doc_dict[e.doc_id]
28+
#d.telechat_date = wrap_value(d.telechat_date(e))
2929
seen.add(e.doc_id)
3030

3131
def fill_in_document_sessions(docs, doc_dict, doc_ids):
@@ -82,7 +82,7 @@ def fill_in_document_table_attributes(docs, have_telechat_date=False):
8282
# misc
8383
for d in docs:
8484
# emulate canonical name which is used by a lot of the utils
85-
d.canonical_name = wrap_value(rfc_aliases[d.pk] if d.pk in rfc_aliases else d.name)
85+
# d.canonical_name = wrap_value(rfc_aliases[d.pk] if d.pk in rfc_aliases else d.name)
8686

8787
if d.rfc_number() != None and d.latest_event_cache["published_rfc"]:
8888
d.latest_revision_date = d.latest_event_cache["published_rfc"].time

ietf/doc/views_search.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,15 @@
3939

4040
from django import forms
4141
from django.conf import settings
42-
from django.core.cache import cache
42+
from django.core.cache import cache, caches
4343
from django.urls import reverse as urlreverse
4444
from django.db.models import Q
4545
from django.http import Http404, HttpResponseBadRequest, HttpResponse, HttpResponseRedirect, QueryDict
4646
from django.shortcuts import render
4747
from django.utils.cache import _generate_cache_key # type: ignore
4848

4949

50+
5051
import debug # pyflakes:ignore
5152

5253
from ietf.doc.models import ( Document, DocHistory, DocAlias, State,
@@ -485,12 +486,20 @@ def drafts_in_iesg_process(request):
485486
})
486487

487488
def recent_drafts(request, days=7):
488-
since = datetime.datetime.now()-datetime.timedelta(days=days)
489-
state = State.objects.get(type='draft', slug='active')
490-
events = NewRevisionDocEvent.objects.filter(time__gt=since)
491-
names = [ e.doc.name for e in events ]
492-
docs = Document.objects.filter(name__in=names, states=state)
493-
results, meta = prepare_document_table(request, docs, query={'sort':'-date', }, max_results=len(names))
489+
slowcache = caches['slowpages']
490+
cache_key = f'recentdraftsview{days}'
491+
cached_val = slowcache.get(cache_key)
492+
if not cached_val:
493+
since = datetime.datetime.now()-datetime.timedelta(days=days)
494+
state = State.objects.get(type='draft', slug='active')
495+
events = NewRevisionDocEvent.objects.filter(time__gt=since)
496+
names = [ e.doc.name for e in events ]
497+
docs = Document.objects.filter(name__in=names, states=state)
498+
results, meta = prepare_document_table(request, docs, query={'sort':'-date', }, max_results=len(names))
499+
slowcache.set(cache_key, [docs, results, meta], 1800)
500+
else:
501+
[docs, results, meta] = cached_val
502+
494503
pages = 0
495504
for doc in results:
496505
pages += doc.pages or 0

0 commit comments

Comments
 (0)