forked from erp-dev/erp
feat: big version, added tasks for backup_database and stock change, added health check api, approve sse (support channel via merchant)
This commit is contained in:
42
api_v1/views/healthy.py
Normal file
42
api_v1/views/healthy.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import platform
|
||||
from typing import Dict
|
||||
|
||||
from django.db import connections, DatabaseError
|
||||
from django.utils import timezone
|
||||
from django.utils.version import get_version
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
|
||||
class HealthCheckView(APIView):
|
||||
"""
|
||||
简单健康检查接口,返回当前服务的基础指标信息,包括:
|
||||
- 应用版本
|
||||
- Python/Django 版本
|
||||
- 服务器时间
|
||||
- 数据库连接状态
|
||||
"""
|
||||
|
||||
authentication_classes: list = []
|
||||
permission_classes: list = []
|
||||
|
||||
def get(self, request):
|
||||
db_status: Dict[str, str] = {}
|
||||
for alias in connections:
|
||||
try:
|
||||
connections[alias].cursor()
|
||||
db_status[alias] = 'ok'
|
||||
except DatabaseError as exc:
|
||||
db_status[alias] = f'error: {exc.__class__.__name__}'
|
||||
|
||||
payload = {
|
||||
'service': 'flower-api',
|
||||
'status': 'ok' if all(status == 'ok' for status in db_status.values()) else 'degraded',
|
||||
'server_time': timezone.now().isoformat(),
|
||||
'python_version': platform.python_version(),
|
||||
'django_version': get_version(),
|
||||
'platform': platform.platform(),
|
||||
'databases': db_status,
|
||||
}
|
||||
return Response(payload)
|
||||
|
||||
Reference in New Issue
Block a user