Skip to content

Commit 1def0a1

Browse files
committed
Pickup and return context from django middleware
1 parent 325fb15 commit 1def0a1

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

instana/middleware.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
1-
import opentracing
1+
import opentracing as ot
22
import instana.tracer
33
import opentracing.ext.tags as ext
44

55

66
class InstanaMiddleware(object):
77
def __init__(self, get_response):
88
self.get_response = get_response
9-
opentracing.global_tracer = instana.tracer.InstanaTracer()
9+
ot.global_tracer = instana.tracer.InstanaTracer()
1010
self
1111

1212
def __call__(self, request):
13-
span = opentracing.global_tracer.start_span("django")
13+
env = request.environ
14+
if 'HTTP_X_INSTANA_T' in env and 'HTTP_X_INSTANA_S' in env:
15+
ctx = ot.global_tracer.extract(ot.Format.HTTP_HEADERS, env)
16+
span = ot.global_tracer.start_span("django", child_of=ctx)
17+
else:
18+
span = ot.global_tracer.start_span("django")
1419

15-
span.set_tag(ext.HTTP_URL, request.environ['PATH_INFO'])
16-
span.set_tag("http.params", request.environ['QUERY_STRING'])
20+
span.set_tag(ext.HTTP_URL, env['PATH_INFO'])
21+
span.set_tag("http.params", env['QUERY_STRING'])
1722
span.set_tag(ext.HTTP_METHOD, request.method)
18-
span.set_tag("http.host", request.environ['HTTP_HOST'])
23+
span.set_tag("http.host", env['HTTP_HOST'])
1924

2025
response = self.get_response(request)
2126

2227
span.set_tag(ext.HTTP_STATUS_CODE, response.status_code)
28+
ot.global_tracer.inject(span.context, ot.Format.HTTP_HEADERS, response)
2329
span.finish()
2430
return response

0 commit comments

Comments
 (0)