You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django/middleware.py
+28-9
Original file line number
Diff line number
Diff line change
@@ -16,6 +16,7 @@
16
16
fromtimeimporttime
17
17
fromtypingimportCallable
18
18
19
+
fromdjangoimportVERSIONasdjango_version
19
20
fromdjango.httpimportHttpRequest, HttpResponse
20
21
21
22
fromopentelemetry.contextimportattach, detach
@@ -42,6 +43,32 @@
42
43
exceptImportError:
43
44
fromdjango.urlsimportResolver404, resolve
44
45
46
+
DJANGO_2_0=django_version>= (2, 0)
47
+
48
+
ifDJANGO_2_0:
49
+
# Since Django 2.0, only `settings.MIDDLEWARE` is supported, so new-style
50
+
# middlewares can be used.
51
+
classMiddlewareMixin:
52
+
def__init__(self, get_response):
53
+
self.get_response=get_response
54
+
55
+
def__call__(self, request):
56
+
self.process_request(request)
57
+
response=self.get_response(request)
58
+
returnself.process_response(request, response)
59
+
60
+
61
+
else:
62
+
# Django versions 1.x can use `settings.MIDDLEWARE_CLASSES` and expect
63
+
# old-style middlewares, which are created by inheriting from
64
+
# `deprecation.MiddlewareMixin` since its creation in Django 1.10 and 1.11,
65
+
# or from `object` for older versions.
66
+
try:
67
+
fromdjango.utils.deprecationimportMiddlewareMixin
68
+
exceptImportError:
69
+
MiddlewareMixin=object
70
+
71
+
45
72
_logger=getLogger(__name__)
46
73
_attributes_by_preference= [
47
74
[
@@ -65,7 +92,7 @@
65
92
]
66
93
67
94
68
-
class_DjangoMiddleware:
95
+
class_DjangoMiddleware(MiddlewareMixin):
69
96
"""Django Middleware for OpenTelemetry"""
70
97
71
98
_environ_activation_key= (
@@ -84,9 +111,6 @@ class _DjangoMiddleware:
84
111
[Span, HttpRequest, HttpResponse], None
85
112
] =None
86
113
87
-
def__init__(self, get_response):
88
-
self.get_response=get_response
89
-
90
114
@staticmethod
91
115
def_get_span_name(request):
92
116
try:
@@ -109,11 +133,6 @@ def _get_span_name(request):
109
133
exceptResolver404:
110
134
return"HTTP {}".format(request.method)
111
135
112
-
def__call__(self, request):
113
-
self.process_request(request)
114
-
response=self.get_response(request)
115
-
returnself.process_response(request, response)
116
-
117
136
defprocess_request(self, request):
118
137
# request.META is a dictionary containing all available HTTP headers
0 commit comments