5
5
import os
6
6
from functools import wraps
7
7
8
- prom_counter = Counter ('function_calls_count' , 'query??' , ['function' , 'module' , 'result' ])
8
+ prom_counter = Counter ('function_calls_count' , 'query??' , ['function' , 'module' , 'result' , 'caller' ])
9
9
prom_histogram = Histogram ('function_calls_duration' , 'query??' , ['function' , 'module' ])
10
10
# prom_guage = Gauge('function_calls_concurrent', 'query??', ['function', 'module']) # we are not doing gauge atm
11
11
@@ -22,12 +22,13 @@ def autometrics(func):
22
22
def wrapper (* args , ** kwargs ):
23
23
func_name = func .__name__
24
24
start_time = time .time ()
25
+ caller = get_caller_function (func )
25
26
try :
26
27
result = func (* args , ** kwargs )
27
- prom_counter .labels (func_name , module_name , 'ok' ).inc ()
28
+ prom_counter .labels (func_name , module_name , 'ok' , caller ).inc ()
28
29
except Exception as e :
29
30
result = e .__class__ .__name__
30
- prom_counter .labels (func_name , module_name , 'error' ).inc ()
31
+ prom_counter .labels (func_name , module_name , 'error' , caller ).inc ()
31
32
duration = time .time () - start_time
32
33
prom_histogram .labels (func_name , module_name ).observe (duration )
33
34
return result
@@ -50,4 +51,9 @@ def write_docs(func_name, module_name):
50
51
for key , value in urls .items ():
51
52
docs = f"{ docs } { key } : { value } \n \n "
52
53
docs = f"{ docs } -------------------------------------------\n "
53
- return docs
54
+ return docs
55
+
56
+ def get_caller_function (func ):
57
+ caller_frame = inspect .stack ()[2 ]
58
+ caller_function_name = caller_frame [3 ]
59
+ return caller_function_name
0 commit comments