mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2024-06-13 10:49:23 +00:00
This is still slow in some cases, despite #2723, so this information should give useful data about how it could be optimized more. This also adds some abstraction around getting the tracer, just to follow the advice in the OpenTelemetry documentation not to use __name__ directly to set the tracer name. The advice is ignored in most of their examples, so it probably doesn't matter, but IDK, seems reasonable to try to follow it. Related: #2720
36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
from opentelemetry import trace
|
|
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
|
|
from opentelemetry.sdk.trace import TracerProvider
|
|
from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter
|
|
|
|
from bookwyrm import settings
|
|
|
|
trace.set_tracer_provider(TracerProvider())
|
|
if settings.OTEL_EXPORTER_CONSOLE:
|
|
trace.get_tracer_provider().add_span_processor(
|
|
BatchSpanProcessor(ConsoleSpanExporter())
|
|
)
|
|
elif settings.OTEL_EXPORTER_OTLP_ENDPOINT:
|
|
trace.get_tracer_provider().add_span_processor(
|
|
BatchSpanProcessor(OTLPSpanExporter())
|
|
)
|
|
|
|
|
|
def instrumentDjango():
|
|
from opentelemetry.instrumentation.django import DjangoInstrumentor
|
|
|
|
DjangoInstrumentor().instrument()
|
|
|
|
|
|
def instrumentCelery():
|
|
from opentelemetry.instrumentation.celery import CeleryInstrumentor
|
|
from celery.signals import worker_process_init
|
|
|
|
@worker_process_init.connect(weak=False)
|
|
def init_celery_tracing(*args, **kwargs):
|
|
CeleryInstrumentor().instrument()
|
|
|
|
|
|
def tracer():
|
|
return trace.get_tracer(__name__)
|