implemented response timing via time_view
decorator
This commit is contained in:
0
utils/__init__.py
Normal file
0
utils/__init__.py
Normal file
26
utils/decorators.py
Normal file
26
utils/decorators.py
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import time
|
||||||
|
from functools import wraps
|
||||||
|
from rest_framework.response import Response
|
||||||
|
|
||||||
|
|
||||||
|
def time_view(view_func):
|
||||||
|
"""Decorator to measure the execution time and add it to the JSON response."""
|
||||||
|
|
||||||
|
@wraps(view_func)
|
||||||
|
def wrapper(request, *args, **kwargs):
|
||||||
|
|
||||||
|
start_time = time.perf_counter()
|
||||||
|
|
||||||
|
response = view_func(request, *args, **kwargs)
|
||||||
|
|
||||||
|
end_time = time.perf_counter()
|
||||||
|
elapsed_time = end_time - start_time
|
||||||
|
|
||||||
|
if isinstance(response, Response) and isinstance(response.data, dict):
|
||||||
|
response.data["time_elapsed_seconds"] = f"{elapsed_time:.4f}"
|
||||||
|
|
||||||
|
print(f"[{view_func.__name__}] Time elapsed: {elapsed_time:.4f} seconds")
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
return wrapper
|
6
views.py
6
views.py
@@ -31,6 +31,9 @@ from rest_framework.response import Response
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from uplim.models import Pixel, CatalogSource
|
from uplim.models import Pixel, CatalogSource
|
||||||
|
|
||||||
|
from .utils.decorators import time_view
|
||||||
|
from django.utils.decorators import method_decorator
|
||||||
|
|
||||||
# SANITIZE RESPONSE DATA BEFORE JSON CONVERSION FOR DEBUGGING NANS
|
# SANITIZE RESPONSE DATA BEFORE JSON CONVERSION FOR DEBUGGING NANS
|
||||||
# now NaNs are converted to 'null' beforehand
|
# now NaNs are converted to 'null' beforehand
|
||||||
# ****************************************************************
|
# ****************************************************************
|
||||||
@@ -70,6 +73,7 @@ def parse_survey_param(raw):
|
|||||||
# **************************************************************
|
# **************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(time_view, name="dispatch")
|
||||||
class PixelAggregateView(APIView):
|
class PixelAggregateView(APIView):
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
@@ -132,6 +136,7 @@ class PixelAggregateView(APIView):
|
|||||||
# **************************************************************
|
# **************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(time_view, name="dispatch")
|
||||||
class UpperLimitView(APIView):
|
class UpperLimitView(APIView):
|
||||||
"""
|
"""
|
||||||
Calculate confidence bounds based on aperture photometry using classic and bayesian methods
|
Calculate confidence bounds based on aperture photometry using classic and bayesian methods
|
||||||
@@ -538,6 +543,7 @@ class UpperLimitView(APIView):
|
|||||||
return Response(clean, status=status.HTTP_200_OK)
|
return Response(clean, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
@method_decorator(time_view, name="dispatch")
|
||||||
class StackedUpperLimitView(APIView):
|
class StackedUpperLimitView(APIView):
|
||||||
"""
|
"""
|
||||||
Calculate confidence bounds based on aperture photometry using classic and bayesian methods for a set of sources
|
Calculate confidence bounds based on aperture photometry using classic and bayesian methods for a set of sources
|
||||||
|
Reference in New Issue
Block a user