Skip to content

Commit e1622b4

Browse files
committed
fix: review 1 changes
1 parent be0f8e5 commit e1622b4

File tree

1 file changed

+55
-49
lines changed

1 file changed

+55
-49
lines changed

sentry_sdk/integrations/aiohttp.py

Lines changed: 55 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from sentry_sdk.api import continue_trace
55
from sentry_sdk._compat import reraise
6-
from sentry_sdk.consts import OP
6+
from sentry_sdk.consts import OP, SPANDATA
77
from sentry_sdk.hub import Hub
88
from sentry_sdk.integrations import Integration, DidNotEnable
99
from sentry_sdk.integrations.logging import ignore_logger
@@ -13,10 +13,12 @@
1313
request_body_within_bounds,
1414
)
1515
from sentry_sdk.tracing import SOURCE_FOR_STYLE, TRANSACTION_SOURCE_ROUTE
16+
from sentry_sdk.tracing_utils import should_propagate_trace
1617
from sentry_sdk.utils import (
1718
capture_internal_exceptions,
1819
event_from_exception,
1920
logger,
21+
parse_url,
2022
parse_version,
2123
transaction_from_function,
2224
HAS_REAL_CONTEXTVARS,
@@ -38,8 +40,7 @@
3840
if TYPE_CHECKING:
3941
from aiohttp.web_request import Request
4042
from aiohttp.abc import AbstractMatchInfo
41-
from aiohttp import TraceRequestStartParams
42-
from aiohttp import TraceRequestEndParams
43+
from aiohttp import TraceRequestStartParams, TraceRequestEndParams
4344
from types import SimpleNamespace
4445
from typing import Any
4546
from typing import Dict
@@ -55,52 +56,6 @@
5556
TRANSACTION_STYLE_VALUES = ("handler_name", "method_and_path_pattern")
5657

5758

58-
def create_trace_config():
59-
# type: () -> TraceConfig
60-
async def on_request_start(session, trace_config_ctx, params):
61-
# type: (ClientSession, SimpleNamespace, TraceRequestStartParams) -> None
62-
hub = Hub.current
63-
if hub.get_integration(AioHttpIntegration) is None:
64-
return
65-
66-
method = params.method.upper()
67-
request_url = str(params.url)
68-
69-
span = hub.start_span(
70-
op=OP.HTTP_CLIENT, description="%s %s" % (method, request_url)
71-
)
72-
span.set_data("method", method)
73-
span.set_data("url", request_url)
74-
75-
for key, value in hub.iter_trace_propagation_headers(span):
76-
logger.debug(
77-
"[Tracing] Adding `{key}` header {value} to outgoing request to {url}.".format(
78-
key=key, value=value, url=params.url
79-
)
80-
)
81-
params.headers[key] = value
82-
83-
trace_config_ctx.span = span
84-
85-
async def on_request_end(session, trace_config_ctx, params):
86-
# type: (ClientSession, SimpleNamespace, TraceRequestEndParams) -> None
87-
if trace_config_ctx.span is None:
88-
return
89-
90-
span = trace_config_ctx.span
91-
span.set_data("status_code", int(params.response.status))
92-
span.set_http_status(int(params.response.status))
93-
span.set_data("reason", params.response.reason)
94-
span.finish()
95-
96-
trace_config = TraceConfig()
97-
98-
trace_config.on_request_start.append(on_request_start)
99-
trace_config.on_request_end.append(on_request_end)
100-
101-
return trace_config
102-
103-
10459
class AioHttpIntegration(Integration):
10560
identifier = "aiohttp"
10661

@@ -233,6 +188,57 @@ def init(*args, **kwargs):
233188
ClientSession.__init__ = init
234189

235190

191+
def create_trace_config():
192+
# type: () -> TraceConfig
193+
async def on_request_start(session, trace_config_ctx, params):
194+
# type: (ClientSession, SimpleNamespace, TraceRequestStartParams) -> None
195+
hub = Hub.current
196+
if hub.get_integration(AioHttpIntegration) is None:
197+
return
198+
199+
method = params.method.upper()
200+
201+
parsed_url = None
202+
with capture_internal_exceptions():
203+
parsed_url = parse_url(str(params.url), sanitize=False)
204+
205+
span = hub.start_span(
206+
op=OP.HTTP_CLIENT, description="%s %s" % (method, parsed_url)
207+
)
208+
span.set_data(SPANDATA.HTTP_METHOD, method)
209+
span.set_data("url", parsed_url)
210+
span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query)
211+
span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment)
212+
213+
if should_propagate_trace(hub, parsed_url):
214+
for key, value in hub.iter_trace_propagation_headers(span):
215+
logger.debug(
216+
"[Tracing] Adding `{key}` header {value} to outgoing request to {url}.".format(
217+
key=key, value=value, url=params.url
218+
)
219+
)
220+
params.headers[key] = value
221+
222+
trace_config_ctx.span = span
223+
224+
async def on_request_end(session, trace_config_ctx, params):
225+
# type: (ClientSession, SimpleNamespace, TraceRequestEndParams) -> None
226+
if trace_config_ctx.span is None:
227+
return
228+
229+
span = trace_config_ctx.span
230+
span.set_http_status(int(params.response.status))
231+
span.set_data("reason", params.response.reason)
232+
span.finish()
233+
234+
trace_config = TraceConfig()
235+
236+
trace_config.on_request_start.append(on_request_start)
237+
trace_config.on_request_end.append(on_request_end)
238+
239+
return trace_config
240+
241+
236242
def _make_request_processor(weak_request):
237243
# type: (Callable[[], Request]) -> EventProcessor
238244
def aiohttp_processor(

0 commit comments

Comments
 (0)