add routing stats because heck why not

This commit is contained in:
Laura Klünder 2018-12-25 18:43:24 +01:00
parent 82af80edb7
commit 0d7cb37759
2 changed files with 21 additions and 4 deletions

View file

@ -44,6 +44,13 @@ def optimize_query(qs):
return qs
def api_stats_clean_location_value(value):
if isinstance(value, str) and value.startswith('c:'):
value = value.split(':')
value = 'c:%s:%d:%d' % (value[1], int(float(value[2]) / 3) * 3, int(float(value[3]) / 3) * 3)
return value
def api_stats(view_name):
def wrapper(func):
@wraps(func)
@ -51,10 +58,7 @@ def api_stats(view_name):
response = func(self, request, *args, **kwargs)
if response.status_code < 400 and kwargs:
name, value = next(iter(kwargs.items()))
if isinstance(value, str) and value.startswith('c:'):
value = value.split(':')
value = 'c:%s:%d:%d' % (value[1], int(float(value[2])/3)*3, int(float(value[3])/3)*3)
increment_cache_key('apistats__%s__%s__%s' % (view_name, name, value))
increment_cache_key('apistats__%s__%s__%s' % (view_name, name, api_stats_clean_location_value(value)))
return response
return wrapped_func
return wrapper

View file

@ -4,7 +4,9 @@ from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import ViewSet
from c3nav.mapdata.api import api_stats_clean_location_value
from c3nav.mapdata.models.access import AccessPermission
from c3nav.mapdata.utils.cache.stats import increment_cache_key
from c3nav.mapdata.utils.locations import visible_locations_for_request
from c3nav.routing.exceptions import LocationUnreachable, NoRouteFound, NotYetRoutable
from c3nav.routing.forms import RouteForm
@ -55,6 +57,17 @@ class RoutingViewSet(ViewSet):
'error': _('No route found.'),
})
increment_cache_key('apistats__route_tuple_%s_%s' % (
api_stats_clean_location_value(form.cleaned_data['origin'].pk),
api_stats_clean_location_value(form.cleaned_data['destination'].pk),
))
increment_cache_key('apistats__route_origin_%s' % (
api_stats_clean_location_value(form.cleaned_data['origin'].pk),
))
increment_cache_key('apistats__route_destination_%s' % (
api_stats_clean_location_value(form.cleaned_data['destination'].pk),
))
return Response({
'request': {
'origin': form.cleaned_data['origin'].pk,