from prometheus_client import generate_latest, CONTENT_TYPE_LATEST from src.metriken import ANFRAGEN, DAUER from src.praemie import berechne_praemie @app.route("/api/praemie") def api_praemie(): with DAUER.time(): try: betrag = berechne_praemie( int(request.args["sf"]), int(request.args["alter"]), ) ANFRAGEN.labels(ergebnis="erfolg").inc() return {"betrag": str(betrag)} except (ValueError, KeyError) as fehler: ANFRAGEN.labels(ergebnis="fehler").inc() app.logger.warning( "Berechnung fehlgeschlagen", extra={"fehler": type(fehler).__name__}, ) return {"fehler": "ungültige Eingabe"}, 400 @app.route("/metrics") def metrics(): return generate_latest(), 200, {"Content-Type": CONTENT_TYPE_LATEST} @app.route("/health") def health(): """Lebt der Prozess?""" return {"status": "ok"} @app.route("/ready") def ready(): """Kann der Dienst Anfragen bearbeiten - inklusive Abhängigkeiten?""" if not datenbank_erreichbar(): return {"status": "nicht bereit"}, 503 return {"status": "bereit"}