mirror of https://github.com/jumpserver/jumpserver
pref: 添加 api debug timer
parent
037cd90f09
commit
4405064e78
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue