# coding:utf-8 import psutil from psutil._common import bytes2human from rest_framework.response import Response from rest_framework.views import APIView from drf_spectacular.utils import extend_schema, OpenApiResponse from .serializers import SystemDetailSerializer from monitor.permissions import LoginPermission class SystemDetailView(APIView): permission_classes = [LoginPermission] @extend_schema( description="获取系统信息功能接口", responses={ 200: SystemDetailSerializer, 400: OpenApiResponse(description="错误状态码") } ) def get(self, request): cpu_rate = psutil.cpu_percent(interval=0.2) memory = psutil.virtual_memory() disk = psutil.disk_usage('/') data = { 'cpu_rate': cpu_rate, 'disk_rate': disk.percent, 'memory_rate': memory.percent, 'disk_used': bytes2human(disk.used), 'disk_total': bytes2human(disk.total), 'memory_used': bytes2human(memory.used), 'memory_total': bytes2human(memory.total) } serobj = SystemDetailSerializer(data) return Response(data=serobj.data, status=200)