views.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # coding:utf-8
  2. import psutil
  3. from psutil._common import bytes2human
  4. from rest_framework.response import Response
  5. from rest_framework.views import APIView
  6. from drf_spectacular.utils import extend_schema, OpenApiResponse
  7. from .serializers import SystemDetailSerializer
  8. from monitor.permissions import LoginPermission
  9. class SystemDetailView(APIView):
  10. permission_classes = [LoginPermission]
  11. @extend_schema(
  12. description="获取系统信息功能接口",
  13. responses={
  14. 200: SystemDetailSerializer,
  15. 400: OpenApiResponse(description="错误状态码")
  16. }
  17. )
  18. def get(self, request):
  19. cpu_rate = psutil.cpu_percent(interval=0.2)
  20. memory = psutil.virtual_memory()
  21. disk = psutil.disk_usage('/')
  22. data = {
  23. 'cpu_rate': cpu_rate,
  24. 'disk_rate': disk.percent,
  25. 'memory_rate': memory.percent,
  26. 'disk_used': bytes2human(disk.used),
  27. 'disk_total': bytes2human(disk.total),
  28. 'memory_used': bytes2human(memory.used),
  29. 'memory_total': bytes2human(memory.total)
  30. }
  31. serobj = SystemDetailSerializer(data)
  32. return Response(data=serobj.data, status=200)