Skip to content

Commit f7ebc49

Browse files
committed
Refactored Django otel position to a separate function
1 parent 8499235 commit f7ebc49

File tree

1 file changed

+27
-18
lines changed
  • instrumentation/opentelemetry-instrumentation-django/src/opentelemetry/instrumentation/django

1 file changed

+27
-18
lines changed

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

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,30 @@ def _get_django_middleware_setting() -> str:
285285
return "MIDDLEWARE"
286286

287287

288+
def _get_django_otel_middleware_position(
289+
middleware_length, default_middleware_position=0
290+
):
291+
otel_position = environ.get("OTEL_PYTHON_DJANGO_MIDDLEWARE_POSITION")
292+
try:
293+
middleware_position = int(otel_position)
294+
except (ValueError, TypeError):
295+
_logger.debug(
296+
"Invalid OTEL_PYTHON_DJANGO_MIDDLEWARE_POSITION value: (%s). Using default position: %d.",
297+
otel_position,
298+
default_middleware_position,
299+
)
300+
middleware_position = default_middleware_position
301+
302+
if middleware_position < 0 or middleware_position > middleware_length:
303+
_logger.debug(
304+
"Middleware position %d is out of range (0-%d). Using 0 as the position",
305+
middleware_position,
306+
middleware_length,
307+
)
308+
middleware_position = 0
309+
return middleware_position
310+
311+
288312
class DjangoInstrumentor(BaseInstrumentor):
289313
"""An instrumentor for Django
290314
@@ -388,24 +412,9 @@ def _instrument(self, **kwargs):
388412

389413
is_sql_commentor_enabled = kwargs.pop("is_sql_commentor_enabled", None)
390414

391-
otel_position = environ.get("OTEL_PYTHON_DJANGO_MIDDLEWARE_POSITION")
392-
try:
393-
middleware_position = int(otel_position)
394-
except (ValueError, TypeError):
395-
_logger.debug(
396-
"The middleware_position you provided (%s) is not an integer. Defaulting to 0.",
397-
otel_position,
398-
)
399-
middleware_position = kwargs.pop("middleware_position", 0)
400-
401-
if len(settings_middleware) < middleware_position:
402-
_logger.debug(
403-
"The middleware_position you provided (%s) is greater than the number of middlewares (%s). Defaulting "
404-
"the middleware_position to 0.",
405-
middleware_position,
406-
len(settings_middleware),
407-
)
408-
middleware_position = 0
415+
middleware_position = _get_django_otel_middleware_position(
416+
len(settings_middleware), kwargs.pop("middleware_position", 0)
417+
)
409418

410419
if is_sql_commentor_enabled:
411420
settings_middleware.insert(

0 commit comments

Comments
 (0)