@@ -51,7 +51,7 @@ def route_naming_wrapper(wrapped, instance, args, kwargs):
5151 with RequestContext (bind_request (* args , ** kwargs )):
5252 transaction = current_transaction ()
5353 if transaction :
54- transaction .set_transaction_name (callable_name (wrapped ), priority = 3 )
54+ transaction .set_transaction_name (callable_name (wrapped ), priority = 2 )
5555 return wrapped (* args , ** kwargs )
5656
5757
@@ -83,14 +83,21 @@ def wrap_background_method(wrapped, instance, args, kwargs):
8383 return wrapped (* args , ** kwargs )
8484
8585
86- @function_wrapper
87- def wrap_middleware (wrapped , instance , args , kwargs ):
88- result = wrapped (* args , ** kwargs )
86+ async def middleware_wrapper (wrapped , instance , args , kwargs ):
87+ transaction = current_transaction ()
88+ if transaction :
89+ transaction .set_transaction_name (callable_name (wrapped ), priority = 1 )
8990
90- dispatch_func = getattr (result , "dispatch_func" , None )
91+ dispatch_func = getattr (wrapped , "dispatch_func" , None )
9192 name = dispatch_func and callable_name (dispatch_func )
9293
93- return FunctionTraceWrapper (result , name = name )
94+ return await FunctionTraceWrapper (wrapped , name = name )(* args , ** kwargs )
95+
96+
97+ @function_wrapper
98+ def wrap_middleware (wrapped , instance , args , kwargs ):
99+ result = wrapped (* args , ** kwargs )
100+ return FunctionWrapper (result , middleware_wrapper )
94101
95102
96103def bind_middleware (middleware_class , * args , ** kwargs ):
@@ -159,6 +166,14 @@ def wrap_add_exception_handler(wrapped, instance, args, kwargs):
159166 return wrapped (exc_class_or_status_code , handler , * args , ** kwargs )
160167
161168
169+ def error_middleware_wrapper (wrapped , instance , args , kwargs ):
170+ transaction = current_transaction ()
171+ if transaction :
172+ transaction .set_transaction_name (callable_name (wrapped ), priority = 1 )
173+
174+ return FunctionTraceWrapper (wrapped )(* args , ** kwargs )
175+
176+
162177def instrument_starlette_applications (module ):
163178 framework = framework_details ()
164179 version_info = tuple (int (v ) for v in framework [1 ].split ("." , 3 )[:3 ])
@@ -178,7 +193,7 @@ def instrument_starlette_requests(module):
178193
179194
180195def instrument_starlette_middleware_errors (module ):
181- wrap_function_trace (module , "ServerErrorMiddleware.__call__" )
196+ wrap_function_wrapper (module , "ServerErrorMiddleware.__call__" , error_middleware_wrapper )
182197
183198 wrap_function_wrapper (module , "ServerErrorMiddleware.__init__" , wrap_server_error_handler )
184199
@@ -188,7 +203,7 @@ def instrument_starlette_middleware_errors(module):
188203
189204
190205def instrument_starlette_exceptions (module ):
191- wrap_function_trace (module , "ExceptionMiddleware.__call__" )
206+ wrap_function_wrapper (module , "ExceptionMiddleware.__call__" , error_middleware_wrapper )
192207
193208 wrap_function_wrapper (module , "ExceptionMiddleware.http_exception" ,
194209 wrap_exception_handler )
0 commit comments