Skip to content

Commit 14e2e7a

Browse files
committed
Use HTTPPropagator in Flask integration
1 parent 82f273c commit 14e2e7a

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

ddtrace/contrib/flask/middleware.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
# project
1212
from ... import compat
1313
from ...ext import http, errors, AppTypes
14+
from ...propagation.http import HTTPPropagator
15+
from ...context import Context
1416

1517
# 3p
1618
import flask.templating
@@ -86,17 +88,19 @@ def _connect(self, signal_to_handler):
8688

8789
# common methods
8890

89-
def _start_span(self, trace_id=None, parent_id=None):
91+
def _start_span(self):
92+
if self._use_distributed_tracing:
93+
propagator = HTTPPropagator()
94+
context = propagator.extract(request.headers)
95+
# Only need to active the new context if something was propagated
96+
if context.trace_id:
97+
self._tracer.context_provider.activate(context)
9098
try:
9199
g.flask_datadog_span = self._tracer.trace(
92100
"flask.request",
93101
service=self._service,
94102
span_type=http.TYPE,
95103
)
96-
if trace_id:
97-
g.flask_datadog_span.trace_id = trace_id
98-
if parent_id:
99-
g.flask_datadog_span.parent_id = parent_id
100104
except Exception:
101105
self.app.logger.exception("error tracing request")
102106

@@ -142,10 +146,7 @@ def _before_request(self):
142146
""" Starts tracing the current request and stores it in the global
143147
request object.
144148
"""
145-
if self._use_distributed_tracing:
146-
self._start_span(*_trace_context_from_request())
147-
else:
148-
self._start_span()
149+
self._start_span()
149150

150151
def _after_request(self, response):
151152
""" handles a successful response. """
@@ -159,10 +160,7 @@ def _after_request(self, response):
159160
# signal handling methods
160161

161162
def _request_started(self, sender):
162-
if self._use_distributed_tracing:
163-
self._start_span(*_trace_context_from_request())
164-
else:
165-
self._start_span()
163+
self._start_span()
166164

167165
def _request_finished(self, sender, response, **kwargs):
168166
try:
@@ -179,12 +177,6 @@ def _request_exception(self, *args, **kwargs):
179177
except Exception:
180178
self.app.logger.exception("error tracing error")
181179

182-
183-
def _trace_context_from_request():
184-
return (request.headers.get('x-datadog-trace-id'),
185-
request.headers.get('x-datadog-parent-id'))
186-
187-
188180
def _patch_render(tracer):
189181
""" patch flask's render template methods with the given tracer. """
190182
# fall back to patching global method

0 commit comments

Comments
 (0)