Skip to content

Commit 4ecef7a

Browse files
committed
add caching to aimodel detail
1 parent 5c20e6e commit 4ecef7a

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

api/views/aimodel_detail.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import logging
44
from typing import Any, Dict, List, Optional
55

6+
from django.core.cache import cache
67
from rest_framework import serializers, status
78
from rest_framework.permissions import AllowAny
89
from rest_framework.request import Request
@@ -11,6 +12,8 @@
1112

1213
from api.models.AIModel import AIModel, ModelEndpoint
1314

15+
AIMODEL_DETAIL_CACHE_TTL = 60 * 15 # 15 minutes
16+
1417
logger = logging.getLogger(__name__)
1518

1619

@@ -119,11 +122,17 @@ class AIModelDetailView(APIView):
119122
def get(self, request: Request, model_id: str) -> Response:
120123
"""Get AI model details."""
121124
try:
125+
cache_key = f"aimodel_detail:{model_id}"
126+
cached = cache.get(cache_key)
127+
if cached:
128+
return Response(cached)
129+
122130
model = AIModel.objects.prefetch_related(
123131
"tags", "sectors", "geographies", "endpoints", "organization", "user"
124132
).get(id=model_id)
125133

126134
serializer = AIModelDetailSerializer(model)
135+
cache.set(cache_key, serializer.data, timeout=AIMODEL_DETAIL_CACHE_TTL)
127136
return Response(serializer.data)
128137

129138
except AIModel.DoesNotExist:

0 commit comments

Comments
 (0)