Код: Выделить всё
rest_app = APIRouter(prefix='/rest')
TIME_METRICS_ANNOTATION = Gauge('request_time_taken', 'Time Taken for My Endpoint')
@TIME_METRICS_ANNOTATION.time()
@rest_app.post("/endpoint")
async def my_endpoint(request: Request):
# body
Я' Я знаю, что есть и другие способы сделать это, но первоначальный подход с аннотациями будет более чистым кодом.
Код: Выделить всё
@rest_app.post("/endpoint")
async def my_endpoint(request: Request):
start_time = time.process_time()
# body
TIME_METRICS_ANNOTATION.set(time.process_time() - start_time)
Код: Выделить всё
@rest_app.post("/endpoint")
async def my_endpoint(request: Request):
my_endpoint_body(request)
@TIME_METRICS_ANNOTATION.time()
def my_endpoint_body(request: Request):
# body
Запрос к примечанию: существует ли встроенный декоратор для типа счетчика? Я столкнулся с проблемами, поскольку Counter.inc() не является вызываемым, в отличие от Gauge.time() или Summary.time()
Подробнее здесь: https://stackoverflow.com/questions/786 ... ction-is-n