pref: 添加 api debug timer

pull/9028/head
ibuler 2022-11-04 20:14:19 +08:00
parent 037cd90f09
commit 4405064e78
7 changed files with 64 additions and 14 deletions

View File

@ -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):

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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'

View File

@ -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

View File

@ -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: