join-api/user_app/caching.py

34 lines
No EOL
885 B
Python

import json
from django.core.cache import cache
from .models import User
from django.core.exceptions import ObjectDoesNotExist
from django.core import serializers
def get_cached_user(user_id):
cache_key = f"user_{user_id}"
cached_user_json = cache.get(cache_key)
if cached_user_json is not None:
return json.loads(cached_user_json)
try:
user = User.objects.get(id=user_id)
except ObjectDoesNotExist:
return None
if user:
user_data = serializers.serialize('json', [user])
cache.set(cache_key, user_data, timeout=3600)
return json.loads(user_data)[0]['fields']
else:
return None
def cache_user(user_id, user_data, timeout=3600):
"""
Saves user data in the cache.
"""
cache_key = f"user_{user_id}"
user_json = json.dumps(user_data)
cache.set(cache_key, user_json, timeout)