Spaces:
Sleeping
Sleeping
| import sqlite3 | |
| from constants import DATABASE_PATH | |
| class MetricsStorage: | |
| def __init__(self, db_path=DATABASE_PATH): | |
| self.db_path = db_path | |
| self.setup_database() | |
| def setup_database(self): | |
| """Initialize the SQLite database and create tables if they don't exist""" | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute( | |
| """ | |
| CREATE TABLE IF NOT EXISTS inference_metrics ( | |
| id INTEGER PRIMARY KEY AUTOINCREMENT, | |
| inference_time REAL, | |
| timestamp DATETIME DEFAULT CURRENT_TIMESTAMP | |
| ) | |
| """ | |
| ) | |
| conn.commit() | |
| def add_metric(self, inference_time): | |
| """Add a new inference time measurement to the database""" | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute( | |
| "INSERT INTO inference_metrics (inference_time) VALUES (?)", | |
| (inference_time,), | |
| ) | |
| conn.commit() | |
| def get_recent_metrics(self, limit=80): | |
| """Get the most recent metrics from the database""" | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute( | |
| "SELECT inference_time FROM inference_metrics ORDER BY timestamp DESC LIMIT ?", | |
| (limit,), | |
| ) | |
| results = cursor.fetchall() | |
| return [r[0] for r in reversed(results)] | |
| def get_total_inferences(self): | |
| """Get the total number of inferences recorded""" | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute("SELECT COUNT(*) FROM inference_metrics") | |
| return cursor.fetchone()[0] | |
| def get_average_time(self, limit=80): | |
| """Get the average inference time from the most recent entries""" | |
| with sqlite3.connect(self.db_path) as conn: | |
| cursor = conn.cursor() | |
| cursor.execute( | |
| "SELECT AVG(inference_time) FROM (SELECT inference_time FROM inference_metrics ORDER BY timestamp DESC LIMIT ?)", | |
| (limit,), | |
| ) | |
| result = cursor.fetchone()[0] | |
| return result if result is not None else 0 | |