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