Files
pretix_cgo/src/pretix/helpers/metrics/middleware.py
2017-03-27 22:24:35 +02:00

35 lines
998 B
Python

import time
from django.urls import resolve
from pretix.base.metrics import pretix_view_duration_seconds
class MetricsMiddleware(object):
blacklist = (
'/healthcheck/',
'/jsi18n/',
'/metrics',
)
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
for b in self.blacklist:
if b in request.path:
return self.get_response(request)
url = resolve(request.path_info)
t0 = time.perf_counter()
resp = self.get_response(request)
tdiff = time.perf_counter() - t0
pretix_view_duration_seconds.observe(tdiff, status_code=resp.status_code, method=request.method,
url_name=url.namespace + ':' + url.url_name)
return resp