From 31bf306b51a5f79cced51f50d8d5a91315b76015 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stefan=20K=C3=B6gl?= Date: Sat, 13 Oct 2012 17:31:07 +0200 Subject: [PATCH] improve caching of podcast queries --- mygpo/db/couchdb/podcast.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/mygpo/db/couchdb/podcast.py b/mygpo/db/couchdb/podcast.py index a12c8be9..2f15e43f 100644 --- a/mygpo/db/couchdb/podcast.py +++ b/mygpo/db/couchdb/podcast.py @@ -1,3 +1,4 @@ +from hashlib import sha1 from random import random from restkit import RequestFailed @@ -132,6 +133,7 @@ def podcast_for_slug_id(slug_id): return podcast_for_slug(slug_id) +@cache_result(timeout=60*60) def podcastgroup_for_slug_id(slug_id): """ Returns the Podcast for either an CouchDB-ID for a Slug """ @@ -182,6 +184,13 @@ def podcastgroup_for_oldid(oldid): def podcast_for_url(url, create=False): + + key = 'podcast-by-url-%s' % sha1(url).hexdigest() + + podcast = cache.get(key) + if podcast: + return podcast + r = Podcast.view('podcasts/by_url', key=url, classes=[Podcast, PodcastGroup], @@ -190,12 +199,15 @@ def podcast_for_url(url, create=False): if r: podcast_group = r.first() - return podcast_group.get_podcast_by_url(url) + podcast = podcast_group.get_podcast_by_url(url) + cache.set(key, podcast) + return podcast if create: podcast = Podcast() podcast.urls = [url] podcast.save() + cache.set(key, podcast) return podcast return None -- 2.11.4.GIT