using function local registry for prometheus

This commit is contained in:
Matthias Bisping 2022-06-15 15:13:10 +02:00
parent a5ff59069a
commit 71af6f703b

View File

@ -3,7 +3,7 @@ from typing import Dict
from flask import Flask, jsonify, request
from funcy import merge
from prometheus_client import generate_latest, Summary
from prometheus_client import generate_latest, Summary, CollectorRegistry
from pyinfra.server.buffering.stream import FlatStreamBuffer
from pyinfra.server.stream.queued_stream_function import QueuedStreamFunction
@ -46,19 +46,22 @@ def _(queued_stream_function: object):
def __set_up_processing_server_impl(operation2function: Dict[str, QueuedStreamFunction]):
app = Flask(__name__)
registry = CollectorRegistry(auto_describe=True)
operation2processor = {
op: LazyRestProcessor(fn, **build_endpoint_suffixes(op)) for op, fn in operation2function.items()
}
def make_summary_instance(op):
return Summary(f"redactmanager_{op}_seconds", f"Time spent on {op}.", registry=registry)
submit_operation2processor = {submit_suffix(op): prc for op, prc in operation2processor.items()}
pickup_operation2processor = {pickup_suffix(op): prc for op, prc in operation2processor.items()}
operation2processor = merge(submit_operation2processor, pickup_operation2processor)
pickup_operation2metric = {
op: Summary(f"redactmanager_{op}_seconds", f"Time spent on {op}.") for op in operation2processor
operation2processor = {
op: LazyRestProcessor(fn, **build_endpoint_suffixes(op)) for op, fn in operation2function.items()
}
pickup_operation2metric = {op: make_summary_instance(op) for op in operation2processor}
@app.route("/ready", methods=["GET"])
def ready():
resp = jsonify("OK")
@ -73,7 +76,7 @@ def __set_up_processing_server_impl(operation2function: Dict[str, QueuedStreamFu
@app.route("/prometheus", methods=["GET"])
def prometheus():
return generate_latest()
return generate_latest(registry=registry)
@app.route("/<operation>", methods=["POST", "PATCH"])
def submit(operation):