This commit is contained in:
caoqianming 2024-03-13 17:41:14 +08:00
commit 8a388928f0
7 changed files with 50 additions and 2 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2024-03-12 08:34
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('enp', '0007_auto_20240228_1618'),
]
operations = [
migrations.AddField(
model_name='vehicleaccess',
name='is_new_energy',
field=models.BooleanField(default=False, verbose_name='是否新能源'),
),
]

View File

@ -124,6 +124,7 @@ class VehicleAccess(BaseModel):
access_time = models.DateTimeField('出入时间', null=True, blank=True)
emission_standard = models.CharField(
'排放标准', max_length=10, null=True, blank=True)
is_new_energy = models.BooleanField('是否新能源', default=False)
door_name = models.CharField('门禁名称', max_length=10, null=True, blank=True)

View File

@ -104,6 +104,7 @@ class VehicleAccessViewSet(ListModelMixin, CustomGenericViewSet):
"vehicle_number": ['icontains'],
"emission_standard": ['exact', 'in'],
"type": ['exact', 'in'],
"is_new_energy": ["exact"],
"access_time": ['gte', 'lte', 'year', 'month', 'day', 'quarter', 'week']
}

View File

@ -1,9 +1,11 @@
import psutil
import redis
from apps.monitor.models import AuditLog
from apps.system.models import User
from datetime import datetime
from apps.utils.tools import compare_values
from apps.utils.models import get_model_info
from server.celery import celery_control, celery_inspect
def delete_auditlog(model, instance_id):
@ -98,3 +100,11 @@ class ServerService:
@classmethod
def get_full(cls):
return {'cpu': cls.get_cpu_dict(), 'memory': cls.get_memory_dict(), 'disk': cls.get_disk_dict()}
class CeleryMonitor:
@classmethod
def get_stats(cls):
return {
'stat': celery_inspect.stats(),
}

View File

@ -1,5 +1,5 @@
from django.urls import path
from .views import DrfRequestLogViewSet, ServerInfoView, LogView, LogDetailView, index, room, video, DbBackupView, AuditlogViewSet
from .views import DrfRequestLogViewSet, ServerInfoView, LogView, LogDetailView, index, room, video, DbBackupView, AuditlogViewSet, CeleryInfoView
API_BASE_URL = 'api/monitor/'
HTML_BASE_URL = 'monitor/'
@ -13,6 +13,7 @@ urlpatterns = [
path(API_BASE_URL + 'log/<str:name>/', LogDetailView.as_view()),
path(API_BASE_URL + 'dbbackup/', DbBackupView.as_view()),
path(API_BASE_URL + 'server/', ServerInfoView.as_view()),
path(API_BASE_URL + 'celery/', CeleryInfoView.as_view()),
path(API_BASE_URL + 'request_log/',
DrfRequestLogViewSet.as_view({'get': 'list'}), name='requestlog_view'),
path(API_BASE_URL + 'auditlog/',

View File

@ -16,8 +16,9 @@ from apps.monitor.filters import DrfLogFilterSet
from apps.monitor.models import DrfRequestLog, AuditLog
from apps.monitor.errors import LOG_NOT_FONED
from apps.monitor.services import ServerService
from apps.monitor.services import ServerService, CeleryMonitor
from apps.utils.viewsets import CustomGenericViewSet
# Create your views here.
@ -35,6 +36,18 @@ def video(request):
return render(request, 'monitor/video.html')
class CeleryInfoView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs):
"""
获取celery状态信息
获取celery状态信息
"""
return Response(CeleryMonitor.get_stats())
class ServerInfoView(APIView):
permission_classes = [IsAuthenticated]

View File

@ -1,6 +1,7 @@
import os
from . import conf
from celery import Celery
from celery.app.control import Control, Inspect
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
@ -16,6 +17,9 @@ app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()
celery_control: Control = Control(app=app)
celery_inspect: Inspect = celery_control.inspect()
@app.task(bind=True)
def debug_task(self):