From a2ba0f8b9fb3e49dc44755b73c533088341ba5c3 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 18 Oct 2017 10:12:49 +0200 Subject: [PATCH] Implement NamespacedCache.get_or_set, reduce default caching time --- src/pretix/base/cache.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/cache.py b/src/pretix/base/cache.py index ab118174bb..5c2300c9be 100644 --- a/src/pretix/base/cache.py +++ b/src/pretix/base/cache.py @@ -1,6 +1,6 @@ import hashlib import time -from typing import Dict, List +from typing import Callable, Dict, List from django.core.cache import caches from django.db.models import Model @@ -41,12 +41,19 @@ class NamespacedCache: prefix = int(time.time()) self.cache.set(self.prefixkey, prefix) - def set(self, key: str, value: str, timeout: int=3600): + def set(self, key: str, value: str, timeout: int=300): return self.cache.set(self._prefix_key(key), value, timeout) def get(self, key: str) -> str: return self.cache.get(self._prefix_key(key, known_prefix=self._last_prefix)) + def get_or_set(self, key: str, default: Callable, timeout=300) -> str: + return self.cache.get_or_set( + self._prefix_key(key, known_prefix=self._last_prefix), + default=default, + timeout=timeout + ) + def get_many(self, keys: List[str]) -> Dict[str, str]: values = self.cache.get_many([self._prefix_key(key) for key in keys]) newvalues = {} @@ -54,7 +61,7 @@ class NamespacedCache: newvalues[self._strip_prefix(k)] = v return newvalues - def set_many(self, values: Dict[str, str], timeout=3600): + def set_many(self, values: Dict[str, str], timeout=300): newvalues = {} for k, v in values.items(): newvalues[self._prefix_key(k)] = v