Files
multi_camera/app/health.py

63 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
健康检查端点
"""
import psutil
import logging
from datetime import datetime
from flask import jsonify
logger = logging.getLogger(__name__)
def get_memory_usage():
"""获取内存使用MB"""
process = psutil.Process()
memory_mb = process.memory_info().rss / 1024 / 1024
return round(memory_mb, 2)
def get_cpu_usage():
"""获取CPU使用率%"""
return psutil.cpu_percent(interval=0.1)
def register_health_routes(app):
"""注册健康检查路由到Flask应用"""
@app.route('/status')
def status():
"""整体状态检查"""
return jsonify({
'status': 'ok',
'service': 'multi-camera-monitor',
'timestamp': datetime.now().isoformat()
})
@app.route('/memory')
def memory():
"""内存使用"""
return jsonify({
'memory_mb': get_memory_usage(),
'unit': 'MB'
})
@app.route('/cpu')
def cpu():
"""CPU使用"""
return jsonify({
'cpu_percent': get_cpu_usage(),
'unit': '%'
})
@app.route('/health')
def health():
"""综合健康检查用于Docker"""
try:
# 简单检查
memory = get_memory_usage()
cpu = get_cpu_usage()
return jsonify({
'status': 'healthy',
'memory_mb': memory,
'cpu_percent': cpu
}), 200
except Exception as e:
logger.error(f"健康检查失败: {e}")
return jsonify({'status': 'unhealthy', 'error': str(e)}), 500