bookmyservice-mhs / app /api /performance.py
MukeshKapoor25's picture
feat(services): replace RuntimeError with HTTPException in helper functions
d8d19cc
"""
Performance monitoring API endpoints.
"""
from fastapi import APIRouter, HTTPException
from typing import Dict, Any
import logging
from app.utils.performance_monitor import get_performance_report
logger = logging.getLogger(__name__)
router = APIRouter()
@router.get("/performance/metrics", response_model=Dict[str, Any])
async def get_performance_metrics():
"""
Get current performance metrics and recommendations.
"""
try:
logger.info("Fetching performance metrics")
report = get_performance_report()
logger.info(f"Performance report generated: {report['metrics']['total_queries']} queries tracked")
return {
"status": "success",
"data": report
}
except Exception as e:
logger.error(f"Error fetching performance metrics: {e}")
raise HTTPException(
status_code=500,
detail=f"Failed to fetch performance metrics: {str(e)}"
)
@router.post("/performance/reset")
async def reset_performance_metrics():
"""
Reset performance metrics (useful for testing and monitoring).
"""
try:
logger.info("Resetting performance metrics")
from app.utils.performance_monitor import performance_metrics
# Reset metrics
performance_metrics.query_times = []
performance_metrics.slow_queries = []
performance_metrics.total_queries = 0
performance_metrics.total_time = 0.0
logger.info("Performance metrics reset successfully")
return {
"status": "success",
"message": "Performance metrics reset successfully"
}
except Exception as e:
logger.error(f"Error resetting performance metrics: {e}")
raise HTTPException(
status_code=500,
detail=f"Failed to reset performance metrics: {str(e)}"
)