Spaces:
Sleeping
Sleeping
File size: 1,938 Bytes
d8d19cc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | """
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)}"
) |