@@ -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+ 
288312class  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