takahe/core/middleware.py
Michael Manfre 3f8045f412
[WIP] Sentry improvements (#108)
Stator clears scope during the main loop to behave more like
transactions. Transaction names are set.

Sentry tags:
* 'takahe.version'
* 'takahe.app' values 'web' or 'stator'

Added settings:
* TAKAHE_SENTRY_SAMPLE_RATE
* TAKAHE_SENTRY_TRACES_SAMPLE_RATE
2022-12-04 18:08:23 -07:00

34 lines
850 B
Python

from django.core.exceptions import MiddlewareNotUsed
from core import sentry
from core.models import Config
class ConfigLoadingMiddleware:
"""
Caches the system config every request
"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
Config.system = Config.load_system()
response = self.get_response(request)
return response
class SentryTaggingMiddleware:
"""
Sets Sentry tags at the start of the request if Sentry is configured.
"""
def __init__(self, get_response):
if not sentry.SENTRY_ENABLED:
raise MiddlewareNotUsed()
self.get_response = get_response
def __call__(self, request):
sentry.set_takahe_app("web")
response = self.get_response(request)
return response