Skip to content

Commit f4135da

Browse files
authored
Merge pull request #333 from ansforge/converter/add-metrics
Converter/add metrics
2 parents 58de71c + 8e9ee7f commit f4135da

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

converter/converter/converter.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from flask import Flask, request, jsonify, g
22
import logging
3+
from werkzeug.middleware.dispatcher import DispatcherMiddleware
4+
from prometheus_client import make_wsgi_app, Histogram
5+
36
from converter.conversion_strategy.conversion_strategy import conversion_strategy
47
from converter.utils import (
58
get_sender,
@@ -14,13 +17,24 @@
1417
app = Flask(__name__)
1518
logger = logging.getLogger(__name__)
1619

20+
# Add prometheus wsgi middleware to route /metrics requests
21+
# ignore typing issue with reassigning method
22+
app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {"/metrics": make_wsgi_app()}) # type: ignore[assignment]
23+
24+
25+
convertion_timer = Histogram(
26+
"conversion_duration_seconds",
27+
"The number of seconds it took to the /convert endpoint to answer",
28+
)
29+
1730

1831
def raise_error(message, code: int = 400):
1932
logger.error(message)
2033
return jsonify({"error": message}), code
2134

2235

2336
@app.route("/convert", methods=["POST"])
37+
@convertion_timer.time()
2438
def convert():
2539
if not request.is_json:
2640
return raise_error("Content-Type must be application/json")

converter/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ dependencies = [
88
"flask>=3.1.2",
99
"gunicorn>=23.0.0",
1010
"jsonpath-ng>=1.7.0",
11+
"prometheus-client>=0.23.1",
1112
"pydantic>=2.11.9",
1213
"python-json-logger>=4.0.0",
1314
"pyyaml>=6.0.2",

converter/uv.lock

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)