Skip to content

Commit bda3fbb

Browse files
authored
Use url.rule instead of request.endpoint for span name flask instrumentation (open-telemetry#1260)
1 parent 9642b6d commit bda3fbb

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

docs/getting_started/tests/test_flask.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,4 @@ def test_flask(self):
4545
output = str(server.stdout.read())
4646
self.assertIn('"name": "HTTP GET"', output)
4747
self.assertIn('"name": "example-request"', output)
48-
self.assertIn('"name": "hello"', output)
48+
self.assertIn('"name": "/"', output)

instrumentation/opentelemetry-instrumentation-flask/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## Unreleased
44

5+
- Use `url.rule` instead of `request.endpoint` for span name
6+
([#1260](https://github.com/open-telemetry/opentelemetry-python/pull/1260))
57
- Record span status and http.status_code attribute on exception
68
([#1257](https://github.com/open-telemetry/opentelemetry-python/pull/1257))
79

instrumentation/opentelemetry-instrumentation-flask/src/opentelemetry/instrumentation/flask/__init__.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,13 @@ def _before_request():
110110
return
111111

112112
environ = flask.request.environ
113-
span_name = flask.request.endpoint or otel_wsgi.get_default_span_name(
114-
environ
115-
)
113+
span_name = None
114+
try:
115+
span_name = flask.request.url_rule.rule
116+
except AttributeError:
117+
pass
118+
if span_name is None:
119+
span_name = otel_wsgi.get_default_span_name(environ)
116120
token = context.attach(
117121
propagators.extract(otel_wsgi.get_header_from_environ, environ)
118122
)

instrumentation/opentelemetry-instrumentation-flask/tests/test_programmatic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def test_simple(self):
102102

103103
span_list = self.memory_exporter.get_finished_spans()
104104
self.assertEqual(len(span_list), 1)
105-
self.assertEqual(span_list[0].name, "_hello_endpoint")
105+
self.assertEqual(span_list[0].name, "/hello/<int:helloid>")
106106
self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER)
107107
self.assertEqual(span_list[0].attributes, expected_attrs)
108108

@@ -154,7 +154,7 @@ def test_internal_error(self):
154154
resp.close()
155155
span_list = self.memory_exporter.get_finished_spans()
156156
self.assertEqual(len(span_list), 1)
157-
self.assertEqual(span_list[0].name, "_hello_endpoint")
157+
self.assertEqual(span_list[0].name, "/hello/<int:helloid>")
158158
self.assertEqual(span_list[0].kind, trace.SpanKind.SERVER)
159159
self.assertEqual(span_list[0].attributes, expected_attrs)
160160

0 commit comments

Comments
 (0)