bookmyservice-mhs / app /api /performance.py
MukeshKapoor25's picture
feat(services): replace RuntimeError with HTTPException in helper functions
d8d19cc
Raw History Blame Contribute Delete
1.94 kB
"""
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)}"
)