Implement NamespacedCache.get_or_set, reduce default caching time

This commit is contained in:
Raphael Michel
2017-10-18 10:12:49 +02:00
parent c6a7b52e34
commit a2ba0f8b9f

View File

@@ -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