From 4405064e78222803c22e91aedf79c2fb4f981b6a Mon Sep 17 00:00:00 2001 From: ibuler Date: Fri, 4 Nov 2022 20:14:19 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E6=B7=BB=E5=8A=A0=20api=20debug=20time?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/assets/serializers/account/base.py | 1 + apps/authentication/middleware.py | 7 ++++ apps/jumpserver/api.py | 26 ++++++++------- apps/jumpserver/middleware.py | 37 ++++++++++++++++++++++ apps/jumpserver/settings/base.py | 2 ++ apps/ops/tasks.py | 2 +- apps/terminal/models/component/terminal.py | 3 +- 7 files changed, 64 insertions(+), 14 deletions(-) diff --git a/apps/assets/serializers/account/base.py b/apps/assets/serializers/account/base.py index 5db43257e..8e03a967e 100644 --- a/apps/assets/serializers/account/base.py +++ b/apps/assets/serializers/account/base.py @@ -31,6 +31,7 @@ class BaseAccountSerializer(BulkOrgResourceModelSerializer): extra_kwargs = { 'secret': {'write_only': True}, 'passphrase': {'write_only': True}, + 'specific': {'label': _('Specific')}, } def validate_private_key(self, private_key): diff --git a/apps/authentication/middleware.py b/apps/authentication/middleware.py index 5b6d7c06f..91b35e78d 100644 --- a/apps/authentication/middleware.py +++ b/apps/authentication/middleware.py @@ -1,4 +1,5 @@ import base64 +import time from django.shortcuts import redirect, reverse, render from django.utils.deprecation import MiddlewareMixin @@ -132,7 +133,13 @@ class SessionCookieMiddleware(MiddlewareMixin): response.set_cookie('jms_session_expire', value, max_age=age) request.session.pop('auth_session_expiration_required', None) + def process_request(self, request): + print("call process request") + time.sleep(0.8) + def process_response(self, request, response: HttpResponse): + import time + time.sleep(2) self.set_cookie_session_prefix(request, response) self.set_cookie_public_key(request, response) self.set_cookie_session_expire(request, response) diff --git a/apps/jumpserver/api.py b/apps/jumpserver/api.py index cee761132..91249ccb6 100644 --- a/apps/jumpserver/api.py +++ b/apps/jumpserver/api.py @@ -308,14 +308,14 @@ class HealthCheckView(HealthApiMixin): def get_db_status(): t1 = time.time() try: - User.objects.first() + ok = User.objects.first() is not None t2 = time.time() - return True, t2 - t1 - except: - t2 = time.time() - return False, t2 - t1 + return ok, t2 - t1 + except Exception as e: + return False, str(e) - def get_redis_status(self): + @staticmethod + def get_redis_status(): key = 'HEALTH_CHECK' t1 = time.time() @@ -324,24 +324,26 @@ class HealthCheckView(HealthApiMixin): cache.set(key, '1', 10) got = cache.get(key) t2 = time.time() + if value == got: - return True, t2 -t1 - return False, t2 -t1 - except: - t2 = time.time() - return False, t2 - t1 + return True, t2 - t1 + return False, 'Value not match' + except Exception as e: + return False, str(e) def get(self, request): + start = time.time() redis_status, redis_time = self.get_redis_status() db_status, db_time = self.get_db_status() status = all([redis_status, db_status]) + time.sleep(1) data = { 'status': status, 'db_status': db_status, 'db_time': db_time, 'redis_status': redis_status, 'redis_time': redis_time, - 'time': int(time.time()) + 'time': int(time.time()), } return Response(data) diff --git a/apps/jumpserver/middleware.py b/apps/jumpserver/middleware.py index ed0c1bae6..bf7aa7945 100644 --- a/apps/jumpserver/middleware.py +++ b/apps/jumpserver/middleware.py @@ -3,6 +3,9 @@ import os import re import pytz +import time +import json + from django.utils import timezone from django.shortcuts import HttpResponse from django.conf import settings @@ -92,3 +95,37 @@ class RefererCheckMiddleware: return HttpResponseForbidden('CSRF CHECK ERROR') response = self.get_response(request) return response + + +class StartMiddleware: + def __init__(self, get_response): + self.get_response = get_response + if not settings.DEBUG_DEV: + raise MiddlewareNotUsed + + def __call__(self, request): + request._s_time_start = time.time() + response = self.get_response(request) + request._s_time_end = time.time() + if request.path == '/api/health/': + data = response.data + data['pre_middleware_time'] = request._e_time_start - request._s_time_start + data['api_time'] = request._e_time_end - request._e_time_start + data['post_middleware_time'] = request._s_time_end - request._e_time_end + response.content = json.dumps(data) + response.headers['Content-Length'] = str(len(response.content)) + return response + return response + + +class EndMiddleware: + def __init__(self, get_response): + self.get_response = get_response + if not settings.DEBUG_DEV: + raise MiddlewareNotUsed + + def __call__(self, request): + request._e_time_start = time.time() + response = self.get_response(request) + request._e_time_end = time.time() + return response diff --git a/apps/jumpserver/settings/base.py b/apps/jumpserver/settings/base.py index 8456d9fa0..24bf7b8b3 100644 --- a/apps/jumpserver/settings/base.py +++ b/apps/jumpserver/settings/base.py @@ -86,6 +86,7 @@ INSTALLED_APPS = [ ] MIDDLEWARE = [ + 'jumpserver.middleware.StartMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', @@ -105,6 +106,7 @@ MIDDLEWARE = [ 'authentication.middleware.ThirdPartyLoginMiddleware', 'authentication.middleware.SessionCookieMiddleware', 'simple_history.middleware.HistoryRequestMiddleware', + 'jumpserver.middleware.EndMiddleware', ] ROOT_URLCONF = 'jumpserver.urls' diff --git a/apps/ops/tasks.py b/apps/ops/tasks.py index 24cca604e..97868a884 100644 --- a/apps/ops/tasks.py +++ b/apps/ops/tasks.py @@ -144,7 +144,7 @@ def check_server_performance_period(): ServerPerformanceCheckUtil().check_and_publish() -@shared_task(queue="ansible", verbose_name=_("Hello"), comment="an test shared task") +@shared_task(verbose_name=_("Hello"), comment="an test shared task") def hello(name, callback=None): from users.models import User import time diff --git a/apps/terminal/models/component/terminal.py b/apps/terminal/models/component/terminal.py index eb68915e4..11a2a9a61 100644 --- a/apps/terminal/models/component/terminal.py +++ b/apps/terminal/models/component/terminal.py @@ -1,4 +1,5 @@ import uuid +import time from django.utils import timezone from django.db import models @@ -34,7 +35,7 @@ class TerminalStatusMixin: def is_alive(self): if not self.last_stat: return False - return self.last_stat.date_created > timezone.now() - timezone.timedelta(seconds=120) + return time.time() - self.last_stat.date_created.timestamp() < 150 class StorageMixin: