@@ -216,15 +216,22 @@ def _method(self, request):
216216 return "<invalid method>"
217217 return m
218218
219+ def label_metric (self , metric , request , response = None , ** labels ):
220+ return metric .labels (** labels ) if labels else metric
221+
219222 def process_request (self , request ):
220223 transport = self ._transport (request )
221224 method = self ._method (request )
222- self .metrics .requests_by_method .labels (method = method ).inc ()
223- self .metrics .requests_by_transport .labels (transport = transport ).inc ()
225+ self .label_metric (self .metrics .requests_by_method , request , method = method ).inc ()
226+ self .label_metric (
227+ self .metrics .requests_by_transport , request , transport = transport
228+ ).inc ()
224229 if request .is_ajax ():
225- self .metrics .requests_ajax .inc ()
230+ self .label_metric ( self . metrics .requests_ajax , request ) .inc ()
226231 content_length = int (request .META .get ("CONTENT_LENGTH" ) or 0 )
227- self .metrics .requests_body_bytes .observe (content_length )
232+ self .label_metric (self .metrics .requests_body_bytes , request ).observe (
233+ content_length
234+ )
228235 request .prometheus_after_middleware_event = Time ()
229236
230237 def _get_view_name (self , request ):
@@ -240,49 +247,79 @@ def process_view(self, request, view_func, *view_args, **view_kwargs):
240247 method = self ._method (request )
241248 if hasattr (request , "resolver_match" ):
242249 name = request .resolver_match .view_name or "<unnamed view>"
243- self .metrics .requests_by_view_transport_method .labels (
244- view = name , transport = transport , method = method
250+ self .label_metric (
251+ self .metrics .requests_by_view_transport_method ,
252+ request ,
253+ view = name ,
254+ transport = transport ,
255+ method = method ,
245256 ).inc ()
246257
247258 def process_template_response (self , request , response ):
248259 if hasattr (response , "template_name" ):
249- self .metrics .responses_by_templatename .labels (
250- templatename = str (response .template_name )
260+ self .label_metric (
261+ self .metrics .responses_by_templatename ,
262+ request ,
263+ response = response ,
264+ templatename = str (response .template_name ),
251265 ).inc ()
252266 return response
253267
254268 def process_response (self , request , response ):
255269 method = self ._method (request )
256270 name = self ._get_view_name (request )
257271 status = str (response .status_code )
258- self .metrics .responses_by_status .labels (status = status ).inc ()
259- self .metrics .responses_by_status_view_method .labels (
260- status = status , view = name , method = method
272+ self .label_metric (
273+ self .metrics .responses_by_status , request , response , status = status
274+ ).inc ()
275+ self .label_metric (
276+ self .metrics .responses_by_status_view_method ,
277+ request ,
278+ response ,
279+ status = status ,
280+ view = name ,
281+ method = method ,
261282 ).inc ()
262283 if hasattr (response , "charset" ):
263- self .metrics .responses_by_charset .labels (
264- charset = str (response .charset )
284+ self .label_metric (
285+ self .metrics .responses_by_charset ,
286+ request ,
287+ response ,
288+ charset = str (response .charset ),
265289 ).inc ()
266290 if hasattr (response , "streaming" ) and response .streaming :
267- self .metrics .responses_streaming .inc ()
291+ self .label_metric ( self . metrics .responses_streaming , request , response ) .inc ()
268292 if hasattr (response , "content" ):
269- self .metrics .responses_body_bytes .observe (len (response .content ))
293+ self .label_metric (
294+ self .metrics .responses_body_bytes , request , response
295+ ).observe (len (response .content ))
270296 if hasattr (request , "prometheus_after_middleware_event" ):
271- self .metrics .requests_latency_by_view_method .labels (
272- view = self ._get_view_name (request ), method = request .method
297+ self .label_metric (
298+ self .metrics .requests_latency_by_view_method ,
299+ request ,
300+ response ,
301+ view = self ._get_view_name (request ),
302+ method = request .method ,
273303 ).observe (TimeSince (request .prometheus_after_middleware_event ))
274304 else :
275- self .metrics .requests_unknown_latency .inc ()
305+ self .label_metric (
306+ self .metrics .requests_unknown_latency , request , response
307+ ).inc ()
276308 return response
277309
278310 def process_exception (self , request , exception ):
279- self .metrics .exceptions_by_type .labels (type = type (exception ).__name__ ).inc ()
311+ self .label_metric (
312+ self .metrics .exceptions_by_type , request , type = type (exception ).__name__
313+ ).inc ()
280314 if hasattr (request , "resolver_match" ):
281315 name = request .resolver_match .view_name or "<unnamed view>"
282- self .metrics .exceptions_by_view . labels ( view = name ).inc ()
316+ self .label_metric ( self . metrics .exceptions_by_view , request , view = name ).inc ()
283317 if hasattr (request , "prometheus_after_middleware_event" ):
284- self .metrics .requests_latency_by_view_method .labels (
285- view = self ._get_view_name (request ), method = request .method
318+ self .label_metric (
319+ self .metrics .requests_latency_by_view_method ,
320+ request ,
321+ view = self ._get_view_name (request ),
322+ method = request .method ,
286323 ).observe (TimeSince (request .prometheus_after_middleware_event ))
287324 else :
288- self .metrics .requests_unknown_latency .inc ()
325+ self .label_metric ( self . metrics .requests_unknown_latency , request ) .inc ()
0 commit comments