使用自定义 python 装饰器接受带有 cherrypy 公开端点的参数
Using a custom python decorator accepting arguments with a cherrypy exposed endpoint
我正在尝试使用 prometheus.There 来监控应用程序的延迟,这是一个装饰器函数,它计算一个函数到 execute.Now 所花费的时间,因为我用一个 cherrypy 暴露的端点包装它,没有来自它的回应。
我也尝试过在我的装饰器上使用 @cherrypy.tools.register('before_handler') ,然后将其附加为 @cherrypy.tools.monitor_request() 但它将通过参数异常作为装饰器接受一个函数。
def monitor_request(func):
def inner1(*args, **kwargs):
begin = time.time()
func(*args, **kwargs)
end = time.time()
diff = end-begin
REQUEST_LATENCY.labels(func.__name__).observe(diff)
REQUEST_COUNT.labels(func.__name__).inc()
return inner1
@cherrypy.expose
@monitor_request
def health1(self):
"""Give back health status"""
return "is_healthy"
我没有返回来自 cherrypy 端点的响应结果,issue.The 正确的代码应该是。
def inner1(*args, **kwargs):
begin = time.time()
x = func(*args, **kwargs)
end = time.time()
diff = end-begin
REQUEST_LATENCY.labels(func.__name__).observe(diff)
REQUEST_COUNT.labels(func.__name__).inc()
return x
return inner1
我正在尝试使用 prometheus.There 来监控应用程序的延迟,这是一个装饰器函数,它计算一个函数到 execute.Now 所花费的时间,因为我用一个 cherrypy 暴露的端点包装它,没有来自它的回应。
我也尝试过在我的装饰器上使用 @cherrypy.tools.register('before_handler') ,然后将其附加为 @cherrypy.tools.monitor_request() 但它将通过参数异常作为装饰器接受一个函数。
def monitor_request(func):
def inner1(*args, **kwargs):
begin = time.time()
func(*args, **kwargs)
end = time.time()
diff = end-begin
REQUEST_LATENCY.labels(func.__name__).observe(diff)
REQUEST_COUNT.labels(func.__name__).inc()
return inner1
@cherrypy.expose
@monitor_request
def health1(self):
"""Give back health status"""
return "is_healthy"
我没有返回来自 cherrypy 端点的响应结果,issue.The 正确的代码应该是。
def inner1(*args, **kwargs):
begin = time.time()
x = func(*args, **kwargs)
end = time.time()
diff = end-begin
REQUEST_LATENCY.labels(func.__name__).observe(diff)
REQUEST_COUNT.labels(func.__name__).inc()
return x
return inner1