Skip to content

Commit bc96f5b

Browse files
committed
Merge pull request #1801 from rtfd/cache-direct
Alter direct calls to redis using intermediate redis settings
2 parents 2bcb8bb + 1eacfdc commit bc96f5b

File tree

7 files changed

+26
-31
lines changed

7 files changed

+26
-31
lines changed

readthedocs/api/base.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from django.conf import settings
77
from django.conf.urls import url
88
from django.shortcuts import get_object_or_404
9+
from django.core.cache import cache
910

1011
from tastypie import fields
1112
from tastypie.authorization import DjangoAuthorization
@@ -25,9 +26,6 @@
2526
log = logging.getLogger(__name__)
2627

2728

28-
redis_client = redis.Redis(**settings.REDIS)
29-
30-
3129
class ProjectResource(ModelResource, SearchMixin):
3230
users = fields.ToManyField('readthedocs.api.base.UserResource', 'users')
3331

@@ -223,7 +221,11 @@ def get_anchor(self, request, **kwargs):
223221
self.throttle_check(request)
224222

225223
query = request.GET.get('q', '')
226-
redis_data = redis_client.keys("*redirects:v4*%s*" % query)
224+
try:
225+
redis_client = cache.get_client(None)
226+
redis_data = redis_client.keys("*redirects:v4*%s*" % query)
227+
except (AttributeError, redis.exceptions.ConnectionError):
228+
redis_data = []
227229
# -2 because http:
228230
urls = [''.join(data.split(':')[6:]) for data in redis_data
229231
if 'http://' in data]

readthedocs/builds/views.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def get_context_data(self, **kwargs):
4444
context['versions'] = Version.objects.public(user=self.request.user, project=self.project)
4545

4646
try:
47-
redis = Redis(**settings.REDIS)
47+
redis = Redis.from_url(settings.BROKER_URL)
4848
context['queue_length'] = redis.llen('celery')
4949
except ConnectionError:
5050
context['queue_length'] = None

readthedocs/projects/utils.py

+17-13
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
import logging
88
from httplib2 import Http
99

10-
from django.conf import settings
1110
import redis
11+
from django.conf import settings
12+
from django.core.cache import cache
1213

1314

1415
log = logging.getLogger(__name__)
@@ -149,18 +150,21 @@ def purge_version(version, mainsite=False, subdomain=False, cname=False):
149150
log.info("Purging %s on readthedocs.org", root_url)
150151
h.request(to_purge, method="PURGE", headers=headers)
151152
if cname:
152-
redis_conn = redis.Redis(**settings.REDIS)
153-
for cnamed in redis_conn.smembers('rtd_slug:v1:%s'
154-
% version.project.slug):
155-
headers = {'Host': cnamed}
156-
url = "/en/%s/*" % version.slug
157-
to_purge = "http://%s%s" % (server, url)
158-
log.info("Purging %s on %s", url, cnamed)
159-
h.request(to_purge, method="PURGE", headers=headers)
160-
root_url = "/"
161-
to_purge = "http://%s%s" % (server, root_url)
162-
log.info("Purging %s on %s", root_url, cnamed)
163-
h.request(to_purge, method="PURGE", headers=headers)
153+
try:
154+
redis_client = cache.get_client(None)
155+
for cnamed in redis_client.smembers('rtd_slug:v1:%s'
156+
% version.project.slug):
157+
headers = {'Host': cnamed}
158+
url = "/en/%s/*" % version.slug
159+
to_purge = "http://%s%s" % (server, url)
160+
log.info("Purging %s on %s", url, cnamed)
161+
h.request(to_purge, method="PURGE", headers=headers)
162+
root_url = "/"
163+
to_purge = "http://%s%s" % (server, root_url)
164+
log.info("Purging %s on %s", root_url, cnamed)
165+
h.request(to_purge, method="PURGE", headers=headers)
166+
except (AttributeError, redis.exceptions.ConnectionError):
167+
pass
164168

165169

166170
class DictObj(object):

readthedocs/settings/onebox.py

-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,6 @@
99
}
1010
}
1111

12-
REDIS = {
13-
'host': 'localhost',
14-
'port': 6379,
15-
'db': 0,
16-
}
1712
BROKER_URL = 'redis://localhost:6379/0'
1813
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
1914
CELERY_ALWAYS_EAGER = False

readthedocs/settings/sqlite.py

-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,6 @@
99
}
1010
}
1111

12-
REDIS = {
13-
'host': 'localhost',
14-
'port': 6379,
15-
'db': 0,
16-
}
17-
1812
BROKER_URL = 'redis://localhost:6379/0'
1913
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
2014
# CELERY_ALWAYS_EAGER = False

requirements/deploy.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
psycopg2==2.4.6
33
gunicorn==19.1.0
44
pysolr==2.0.13
5-
django-redis-cache==0.9.5
5+
django-redis-cache==1.6.3
66
django-mailgun==0.2.2
77

88
hiredis==0.1.2

requirements/pip.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ slumber==0.6.0
2222
lxml==3.3.5
2323

2424
# Basic tools
25-
redis==2.7.1
25+
redis==2.10.3
2626
celery==3.1.18
2727
django-celery==3.1.16
2828
django-allauth==0.21.0

0 commit comments

Comments
 (0)