diff --git a/src/c3nav/mapdata/models/update.py b/src/c3nav/mapdata/models/update.py index a6f63d36..de879191 100644 --- a/src/c3nav/mapdata/models/update.py +++ b/src/c3nav/mapdata/models/update.py @@ -117,7 +117,8 @@ class MapUpdate(models.Model): if settings.HAS_REDIS: import redis lock_aquired = None - lock = redis.Redis().lock('mapupdate:process_updates:lock') + client = redis.Redis(connection_pool=settings.REDIS_CONNECTION_POOL) + lock = client.lock('mapupdate:process_updates:lock') try: lock_aquired = lock.acquire(blocking=False, blocking_timeout=1800) if not lock_aquired: diff --git a/src/c3nav/settings.py b/src/c3nav/settings.py index e44cb6ab..88569de2 100644 --- a/src/c3nav/settings.py +++ b/src/c3nav/settings.py @@ -1,5 +1,6 @@ # c3nav settings, mostly taken from the pretix project import os +import re import string import sys from contextlib import suppress @@ -248,11 +249,14 @@ if HAS_MEMCACHED: SESSION_ENGINE = "django.contrib.sessions.backends.cached_db" HAS_REDIS = bool(config.get('redis', 'location', fallback=None, env='C3NAV_REDIS')) +REDIS_CONNECTION_POOL = None if HAS_REDIS: + import redis HAS_REAL_CACHE = True + REDIS_SERVERS = re.split("[;,]", config.get('redis', 'location', env='C3NAV_REDIS')) CACHES['redis'] = { "BACKEND": "django.core.cache.backends.redis.RedisCache", - "LOCATION": config.get('redis', 'location', env='C3NAV_REDIS'), + "LOCATION": REDIS_SERVERS, } if not HAS_MEMCACHED: CACHES['default'] = CACHES['redis'] @@ -260,6 +264,8 @@ if HAS_REDIS: else: SESSION_CACHE_ALIAS = "redis" + REDIS_CONNECTION_POOL = redis.ConnectionPool.from_url(REDIS_SERVERS[0]) + HAS_CELERY = bool(config.get('celery', 'broker', fallback=None)) if HAS_CELERY: BROKER_URL = config.get('celery', 'broker')