mirror of https://github.com/jumpserver/jumpserver
pref: 添加 api debug timer
parent
037cd90f09
commit
4405064e78
|
@ -31,6 +31,7 @@ class BaseAccountSerializer(BulkOrgResourceModelSerializer):
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'secret': {'write_only': True},
|
'secret': {'write_only': True},
|
||||||
'passphrase': {'write_only': True},
|
'passphrase': {'write_only': True},
|
||||||
|
'specific': {'label': _('Specific')},
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate_private_key(self, private_key):
|
def validate_private_key(self, private_key):
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import base64
|
import base64
|
||||||
|
import time
|
||||||
|
|
||||||
from django.shortcuts import redirect, reverse, render
|
from django.shortcuts import redirect, reverse, render
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
@ -132,7 +133,13 @@ class SessionCookieMiddleware(MiddlewareMixin):
|
||||||
response.set_cookie('jms_session_expire', value, max_age=age)
|
response.set_cookie('jms_session_expire', value, max_age=age)
|
||||||
request.session.pop('auth_session_expiration_required', None)
|
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):
|
def process_response(self, request, response: HttpResponse):
|
||||||
|
import time
|
||||||
|
time.sleep(2)
|
||||||
self.set_cookie_session_prefix(request, response)
|
self.set_cookie_session_prefix(request, response)
|
||||||
self.set_cookie_public_key(request, response)
|
self.set_cookie_public_key(request, response)
|
||||||
self.set_cookie_session_expire(request, response)
|
self.set_cookie_session_expire(request, response)
|
||||||
|
|
|
@ -308,14 +308,14 @@ class HealthCheckView(HealthApiMixin):
|
||||||
def get_db_status():
|
def get_db_status():
|
||||||
t1 = time.time()
|
t1 = time.time()
|
||||||
try:
|
try:
|
||||||
User.objects.first()
|
ok = User.objects.first() is not None
|
||||||
t2 = time.time()
|
t2 = time.time()
|
||||||
return True, t2 - t1
|
return ok, t2 - t1
|
||||||
except:
|
except Exception as e:
|
||||||
t2 = time.time()
|
return False, str(e)
|
||||||
return False, t2 - t1
|
|
||||||
|
|
||||||
def get_redis_status(self):
|
@staticmethod
|
||||||
|
def get_redis_status():
|
||||||
key = 'HEALTH_CHECK'
|
key = 'HEALTH_CHECK'
|
||||||
|
|
||||||
t1 = time.time()
|
t1 = time.time()
|
||||||
|
@ -324,24 +324,26 @@ class HealthCheckView(HealthApiMixin):
|
||||||
cache.set(key, '1', 10)
|
cache.set(key, '1', 10)
|
||||||
got = cache.get(key)
|
got = cache.get(key)
|
||||||
t2 = time.time()
|
t2 = time.time()
|
||||||
|
|
||||||
if value == got:
|
if value == got:
|
||||||
return True, t2 - t1
|
return True, t2 - t1
|
||||||
return False, t2 -t1
|
return False, 'Value not match'
|
||||||
except:
|
except Exception as e:
|
||||||
t2 = time.time()
|
return False, str(e)
|
||||||
return False, t2 - t1
|
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
|
start = time.time()
|
||||||
redis_status, redis_time = self.get_redis_status()
|
redis_status, redis_time = self.get_redis_status()
|
||||||
db_status, db_time = self.get_db_status()
|
db_status, db_time = self.get_db_status()
|
||||||
status = all([redis_status, db_status])
|
status = all([redis_status, db_status])
|
||||||
|
time.sleep(1)
|
||||||
data = {
|
data = {
|
||||||
'status': status,
|
'status': status,
|
||||||
'db_status': db_status,
|
'db_status': db_status,
|
||||||
'db_time': db_time,
|
'db_time': db_time,
|
||||||
'redis_status': redis_status,
|
'redis_status': redis_status,
|
||||||
'redis_time': redis_time,
|
'redis_time': redis_time,
|
||||||
'time': int(time.time())
|
'time': int(time.time()),
|
||||||
}
|
}
|
||||||
return Response(data)
|
return Response(data)
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import pytz
|
import pytz
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.shortcuts import HttpResponse
|
from django.shortcuts import HttpResponse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
@ -92,3 +95,37 @@ class RefererCheckMiddleware:
|
||||||
return HttpResponseForbidden('CSRF CHECK ERROR')
|
return HttpResponseForbidden('CSRF CHECK ERROR')
|
||||||
response = self.get_response(request)
|
response = self.get_response(request)
|
||||||
return response
|
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 = [
|
MIDDLEWARE = [
|
||||||
|
'jumpserver.middleware.StartMiddleware',
|
||||||
'django.middleware.security.SecurityMiddleware',
|
'django.middleware.security.SecurityMiddleware',
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'django.middleware.locale.LocaleMiddleware',
|
'django.middleware.locale.LocaleMiddleware',
|
||||||
|
@ -105,6 +106,7 @@ MIDDLEWARE = [
|
||||||
'authentication.middleware.ThirdPartyLoginMiddleware',
|
'authentication.middleware.ThirdPartyLoginMiddleware',
|
||||||
'authentication.middleware.SessionCookieMiddleware',
|
'authentication.middleware.SessionCookieMiddleware',
|
||||||
'simple_history.middleware.HistoryRequestMiddleware',
|
'simple_history.middleware.HistoryRequestMiddleware',
|
||||||
|
'jumpserver.middleware.EndMiddleware',
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = 'jumpserver.urls'
|
ROOT_URLCONF = 'jumpserver.urls'
|
||||||
|
|
|
@ -144,7 +144,7 @@ def check_server_performance_period():
|
||||||
ServerPerformanceCheckUtil().check_and_publish()
|
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):
|
def hello(name, callback=None):
|
||||||
from users.models import User
|
from users.models import User
|
||||||
import time
|
import time
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import uuid
|
import uuid
|
||||||
|
import time
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
@ -34,7 +35,7 @@ class TerminalStatusMixin:
|
||||||
def is_alive(self):
|
def is_alive(self):
|
||||||
if not self.last_stat:
|
if not self.last_stat:
|
||||||
return False
|
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:
|
class StorageMixin:
|
||||||
|
|
Loading…
Reference in New Issue