-
Notifications
You must be signed in to change notification settings - Fork 319
/
Copy pathmanage.py
executable file
·34 lines (32 loc) · 1.75 KB
/
manage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python
import os
import sys
from django.conf import settings
from opentelemetry import trace
from opentelemetry.instrumentation.django import DjangoInstrumentor
from opentelemetry.instrumentation.logging import LoggingInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import ConsoleSpanExporter, SimpleSpanProcessor
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.dev")
if settings.OTEL_TRACING_ENABLED:
# Set up tracing and logging instrumentation under manage.ru runserver command.
# It's used to provide simple way to test tracing locally.
trace.set_tracer_provider(TracerProvider())
span_processor = SimpleSpanProcessor(ConsoleSpanExporter()) # Log spans to console to simplify local setup
trace.get_tracer_provider().add_span_processor(span_processor)
# DjangoInstrumentor instruments incoming requests and starts root span.
# It's used instead of wsgi middleware in local setup. Not sure if it should be used in prod
DjangoInstrumentor().instrument()
LoggingInstrumentor().instrument() # Instrument logs to add trace_id to log lines
RequestsInstrumentor().instrument() # Instrument requests to instrument downstream calls
try:
from django.core.management import execute_from_command_line
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)