generated from root/feiqiu-ETL
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
# app/main.py
|
|
from fastapi import FastAPI, Header, Depends
|
|
|
|
from .config import get_settings
|
|
from .db import check_health
|
|
|
|
app = FastAPI(
|
|
title="LLZQ Backend",
|
|
version="0.1.0",
|
|
)
|
|
|
|
|
|
def resolve_db_name(x_llzq_env: str | None = Header(default=None, alias="X-LLZQ-Env")) -> str:
|
|
"""
|
|
从请求头 X-LLZQ-Env 中解析要用的 DB 名。
|
|
"""
|
|
settings = get_settings()
|
|
return settings.resolve_db_name(x_llzq_env)
|
|
|
|
|
|
@app.get("/api/ping")
|
|
def ping(db_name: str = Depends(resolve_db_name)):
|
|
"""
|
|
最简单调通接口:
|
|
- 返回当前后端环境
|
|
- 返回实际连接的 DB 名
|
|
- 简单做一个 DB 健康检查
|
|
"""
|
|
settings = get_settings()
|
|
ok = False
|
|
error_msg = None
|
|
|
|
try:
|
|
ok = check_health(db_name)
|
|
except Exception as e:
|
|
error_msg = str(e)
|
|
|
|
return {
|
|
"ok": ok,
|
|
"app_env": settings.app_env,
|
|
"db": db_name,
|
|
"error": error_msg,
|
|
}
|
|
|
|
|
|
@app.get("/api/healthz")
|
|
def healthz():
|
|
"""
|
|
给 Nginx / 监控用的探活接口,不查 DB。
|
|
"""
|
|
return {"status": "ok"} |