forked from CGM_Public/pretix_original
Implement NamespacedCache.get_or_set, reduce default caching time
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import hashlib
|
import hashlib
|
||||||
import time
|
import time
|
||||||
from typing import Dict, List
|
from typing import Callable, Dict, List
|
||||||
|
|
||||||
from django.core.cache import caches
|
from django.core.cache import caches
|
||||||
from django.db.models import Model
|
from django.db.models import Model
|
||||||
@@ -41,12 +41,19 @@ class NamespacedCache:
|
|||||||
prefix = int(time.time())
|
prefix = int(time.time())
|
||||||
self.cache.set(self.prefixkey, prefix)
|
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)
|
return self.cache.set(self._prefix_key(key), value, timeout)
|
||||||
|
|
||||||
def get(self, key: str) -> str:
|
def get(self, key: str) -> str:
|
||||||
return self.cache.get(self._prefix_key(key, known_prefix=self._last_prefix))
|
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]:
|
def get_many(self, keys: List[str]) -> Dict[str, str]:
|
||||||
values = self.cache.get_many([self._prefix_key(key) for key in keys])
|
values = self.cache.get_many([self._prefix_key(key) for key in keys])
|
||||||
newvalues = {}
|
newvalues = {}
|
||||||
@@ -54,7 +61,7 @@ class NamespacedCache:
|
|||||||
newvalues[self._strip_prefix(k)] = v
|
newvalues[self._strip_prefix(k)] = v
|
||||||
return newvalues
|
return newvalues
|
||||||
|
|
||||||
def set_many(self, values: Dict[str, str], timeout=3600):
|
def set_many(self, values: Dict[str, str], timeout=300):
|
||||||
newvalues = {}
|
newvalues = {}
|
||||||
for k, v in values.items():
|
for k, v in values.items():
|
||||||
newvalues[self._prefix_key(k)] = v
|
newvalues[self._prefix_key(k)] = v
|
||||||
|
|||||||
Reference in New Issue
Block a user