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() name = serializers.CharField()
filepath = serializers.CharField() filepath = serializers.CharField()
size = serializers.CharField(label="MB") 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 rest_framework.permissions import IsAuthenticated
from django.conf import settings from django.conf import settings
import os 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.exceptions import NotFound
from rest_framework.mixins import ListModelMixin from rest_framework.mixins import ListModelMixin
from apps.ops.filters import DrfLogFilterSet, TlogFilterSet 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 apps.ops.service import ServerService, CeleryMonitor, RedisMonitor
from server.settings import BACKUP_PATH from server.settings import BACKUP_PATH
from django.core.cache import cache from django.core.cache import cache
from rest_framework.serializers import Serializer
# Create your views here. # Create your views here.
@ -233,14 +234,20 @@ class DbBackupView(APIView):
class CacheView(APIView): class CacheView(APIView):
permission_classes = [IsAdminUser] 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): 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): def post(self, request, key):
if "value" in request.data and request.data["value"] is not None: sr = CacheUpdateSerializer(data=request.data)
cache.set(key, request.data.get("value")) sr.is_valid(raise_exception=True)
vdata = sr.validated_data
cache.set(key, vdata['value'], timeout=vdata["timeout"])
return Response() return Response()
class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet): class DrfRequestLogViewSet(ListModelMixin, CustomGenericViewSet):