feat: base 完善获取修改单个缓存的接口

This commit is contained in:
caoqianming 2026-01-28 12:53:56 +08:00
parent 4b4ff8f5ec
commit cd0e469af3
2 changed files with 17 additions and 6 deletions

View File

@ -29,3 +29,7 @@ class TextListSerializer(serializers.Serializer):
name = serializers.CharField()
filepath = serializers.CharField()
size = serializers.CharField(label="MB")
class CacheUpdateSerializer(serializers.Serializer):
value = serializers.JSONField()
timeout = serializers.IntegerField()

View File

@ -5,7 +5,7 @@ from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from django.conf import settings
import os
from apps.ops.serializers import DbbackupDeleteSerializer, MemDiskSerializer, CpuSerializer, DrfRequestLogSerializer, TlogSerializer, TextListSerializer
from apps.ops.serializers import DbbackupDeleteSerializer, MemDiskSerializer, CpuSerializer, DrfRequestLogSerializer, TlogSerializer, TextListSerializer, CacheUpdateSerializer
from rest_framework.exceptions import NotFound
from rest_framework.mixins import ListModelMixin
from apps.ops.filters import DrfLogFilterSet, TlogFilterSet
@ -20,6 +20,7 @@ from drf_yasg.utils import swagger_auto_schema
from apps.ops.service import ServerService, CeleryMonitor, RedisMonitor
from server.settings import BACKUP_PATH
from django.core.cache import cache
from rest_framework.serializers import Serializer
# Create your views here.
@ -233,14 +234,20 @@ class DbBackupView(APIView):
class CacheView(APIView):
permission_classes = [IsAdminUser]
@swagger_auto_schema(operation_summary="获取value", responses={204: None})
@swagger_auto_schema(operation_summary="获取value", responses={200: Serializer})
def get(self, request, key):
return Response({"value": cache.get(key, None)})
try:
value = cache.get(key)
except Exception as e:
raise NotFound(str(e))
return Response({"value": value})
@swagger_auto_schema(operation_summary="修改value", responses={204: None})
@swagger_auto_schema(operation_summary="修改value", responses={200: None}, request_body=CacheUpdateSerializer)
def post(self, request, key):
if "value" in request.data and request.data["value"] is not None:
cache.set(key, request.data.get("value"))
sr = CacheUpdateSerializer(data=request.data)
sr.is_valid(raise_exception=True)
vdata = sr.validated_data
cache.set(key, vdata['value'], timeout=vdata["timeout"])
return Response()
class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):