takahe/core/sentry.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

49 lines
936 B
Python

from contextlib import contextmanager
from django.conf import settings
SENTRY_ENABLED = False
try:
if settings.SETUP.SENTRY_DSN:
import sentry_sdk
SENTRY_ENABLED = True
except ImportError:
pass
def noop(*args, **kwargs):
pass
@contextmanager
def noop_context(*args, **kwargs):
yield
if SENTRY_ENABLED:
configure_scope = sentry_sdk.configure_scope
push_scope = sentry_sdk.push_scope
set_context = sentry_sdk.set_context
set_tag = sentry_sdk.set_tag
start_transaction = sentry_sdk.start_transaction
else:
configure_scope = noop_context
push_scope = noop_context
set_context = noop
set_tag = noop
start_transaction = noop_context
def set_takahe_app(name: str):
set_tag("takahe.app", name)
def scope_clear(scope):
if scope:
scope.clear()
def set_transaction_name(scope, name: str):
if scope:
scope.set_transaction_name(name)