新增获取服务器cpu、内存、硬盘的使用率视图

pull/2/head
qianzhengkai 2021-03-23 14:50:57 +08:00
parent 50f5b88146
commit 6c7652976c
3 changed files with 60 additions and 3 deletions

View File

@ -2,7 +2,7 @@ from django.urls import re_path
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.system.views import DictDataModelViewSet, DictDetailsModelViewSet, \ from apps.system.views import DictDataModelViewSet, DictDetailsModelViewSet, \
ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet ConfigSettingsModelViewSet, SaveFileModelViewSet, MessagePushModelViewSet, SystemInfoApiView
router = DefaultRouter() router = DefaultRouter()
router.register(r'dict/type', DictDataModelViewSet) router.register(r'dict/type', DictDataModelViewSet)
@ -25,5 +25,7 @@ urlpatterns = [
re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})), re_path('message/receive/', MessagePushModelViewSet.as_view({"get": "get_received_messages"})),
# 消息通知导出 # 消息通知导出
re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})), re_path('message/export/', MessagePushModelViewSet.as_view({'get': 'export',})),
re_path('sys/info/', SystemInfoApiView.as_view())
] ]
urlpatterns += router.urls urlpatterns += router.urls

View File

@ -1,4 +1,5 @@
from rest_framework.request import Request from rest_framework.request import Request
from rest_framework.views import APIView
from apps.op_drf.filters import DataLevelPermissionsFilter from apps.op_drf.filters import DataLevelPermissionsFilter
from apps.op_drf.viewsets import CustomModelViewSet from apps.op_drf.viewsets import CustomModelViewSet
@ -11,6 +12,7 @@ from apps.system.serializers import DictDataSerializer, DictDataCreateUpdateSeri
MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer MessagePushSerializer, MessagePushCreateUpdateSerializer, ExportMessagePushSerializer
from utils.export_excel import export_excel_save_model from utils.export_excel import export_excel_save_model
from utils.response import SuccessResponse from utils.response import SuccessResponse
from utils.system_info_utils import get_memory_used_percent, get_cpu_used_percent, get_disk_used_percent
class DictDataModelViewSet(CustomModelViewSet): class DictDataModelViewSet(CustomModelViewSet):
@ -186,7 +188,6 @@ class MessagePushModelViewSet(CustomModelViewSet):
""" """
获取用户未读消息数量 获取用户未读消息数量
""" """
pass pass
def export(self, request: Request, *args, **kwargs): def export(self, request: Request, *args, **kwargs):
@ -197,6 +198,23 @@ class MessagePushModelViewSet(CustomModelViewSet):
:param kwargs: :param kwargs:
:return: :return:
""" """
field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态','通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间'] field_data = ['消息序号', '标题', '内容', '消息类型', '是否审核', '消息状态', '通知接收消息用户', '创建者', '修改者', '修改时间', '创建时间']
data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data data = ExportMessagePushSerializer(MessagePush.objects.all(), many=True).data
return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls')) return SuccessResponse(export_excel_save_model(request, field_data, data, '导出岗位数据.xls'))
class SystemInfoApiView(APIView):
"""
系统服务监控视图
"""
def get(self, request, *args, **kwargs):
# 获取内存使用率
memory_used_percent = get_memory_used_percent()
# 获取cpu使用率
cpu_used_percent = get_cpu_used_percent()
# 获取硬盘使用率
disk_used_percent = get_disk_used_percent()
return SuccessResponse(data={"memory_used_percent": memory_used_percent,
"cpu_used_percent": cpu_used_percent,
"disk_used_percent": disk_used_percent
})

View File

@ -0,0 +1,37 @@
"""
封装系服务监控相关函数
"""
import psutil as psutil
def get_cpu_used_percent():
"""
获取CPU运行情况
:return:
"""
try:
return float(psutil.cpu_percent(0.1))
except:
pass
def get_memory_used_percent():
try:
memory_info = psutil.virtual_memory()
return float(memory_info.percent)
except:
pass
def get_disk_used_percent():
print(psutil.disk_partitions())
try:
return float(psutil.disk_usage("/").percent)
except:
pass
if __name__ == '__main__':
get_cpu_used_percent()