29 lines
802 B
Python
29 lines
802 B
Python
import json
|
|
import hashlib
|
|
from django.core.cache import caches
|
|
|
|
_cache = caches['default']
|
|
|
|
CACHE_TIMEOUT = 900
|
|
|
|
|
|
def _make_cache_key(prefix, *args, **kwargs):
|
|
raw = json.dumps({'args': args, 'kwargs': kwargs}, sort_keys=True, default=str)
|
|
suffix = hashlib.md5(raw.encode('utf-8')).hexdigest()
|
|
return f'currency_{prefix}_{suffix}'
|
|
|
|
|
|
def get_cached_data(prefix, *args, **kwargs):
|
|
cache_key = _make_cache_key(prefix, *args, **kwargs)
|
|
return _cache.get(cache_key)
|
|
|
|
|
|
def set_cached_data(prefix, data, *args, timeout=CACHE_TIMEOUT, **kwargs):
|
|
cache_key = _make_cache_key(prefix, *args, **kwargs)
|
|
_cache.set(cache_key, data, timeout=timeout)
|
|
|
|
|
|
def delete_cached_data(prefix, *args, **kwargs):
|
|
cache_key = _make_cache_key(prefix, *args, **kwargs)
|
|
_cache.delete(cache_key)
|