|
33 | 33 | import tensorflow as tf # noqa: F401 (ensures TF is initialised before model load) |
34 | 34 | from fastapi import FastAPI, Header, HTTPException, Request |
35 | 35 | from fastapi.middleware.cors import CORSMiddleware |
36 | | -from prometheus_client import REGISTRY, Counter, Histogram |
| 36 | +from prometheus_client import Counter, Histogram |
37 | 37 | from prometheus_fastapi_instrumentator import Instrumentator |
38 | 38 | from pydantic import BaseModel, Field |
39 | 39 |
|
|
56 | 56 | API_KEY = os.environ.get("KANX_API_KEY", "").strip() # "" disables auth |
57 | 57 | RATE_LIMIT_RPM = int(os.environ.get("KANX_RATE_LIMIT_RPM", "0")) # 0 disables |
58 | 58 |
|
59 | | -# Clear Prometheus registry to avoid duplicate metrics when module is reloaded in tests |
60 | | -REGISTRY.clear() |
61 | 59 |
|
62 | 60 | # --------------------------------------------------------------------------- |
63 | 61 | # Thread-safe model registry |
@@ -125,19 +123,18 @@ def _build_fresh_from_config(config_path: str) -> tf.keras.Model: |
125 | 123 | model(tf.zeros((1, cfg.model.layers[0]), dtype=tf.float32)) |
126 | 124 | return model |
127 | 125 |
|
128 | | -MODEL_REGISTRY = ModelRegistry() |
129 | | - |
130 | | -kanx_inference_total = Counter( |
131 | | - "kanx_inference_total", |
132 | | - "Total successful inference requests handled by kanx.", |
133 | | - ["backend", "batch_size"], |
134 | | -) |
135 | | -kanx_inference_latency_seconds = Histogram( |
136 | | - "kanx_inference_latency_seconds", |
137 | | - "Inference latency for /api/predict in seconds.", |
138 | | - ["backend", "batch_size"], |
139 | | -) |
140 | | - |
| 126 | +if "kanx_inference_total" not in globals(): |
| 127 | + kanx_inference_total = Counter( |
| 128 | + "kanx_inference_total", |
| 129 | + "Total successful inference requests handled by kanx.", |
| 130 | + ["backend", "batch_size"], |
| 131 | + ) |
| 132 | +if "kanx_inference_latency_seconds" not in globals(): |
| 133 | + kanx_inference_latency_seconds = Histogram( |
| 134 | + "kanx_inference_latency_seconds", |
| 135 | + "Inference latency for /api/predict in seconds.", |
| 136 | + ["backend", "batch_size"], |
| 137 | + ) |
141 | 138 |
|
142 | 139 | def _bucket_batch_size(batch_size: int) -> str: |
143 | 140 | if batch_size <= 1: |
|
0 commit comments