注册token排查
This commit is contained in:
@@ -7,7 +7,7 @@ import httpx
|
||||
import redis
|
||||
from fastapi import APIRouter, Depends, Header, HTTPException, Query
|
||||
from pydantic import BaseModel, Field
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.limits import rate_limit_push_by_ip
|
||||
@@ -297,6 +297,7 @@ async def scheduler_health(db: AsyncSession = Depends(get_db)) -> dict[str, Any]
|
||||
"worker": {"ok": False, "worker_count": 0},
|
||||
"beat": {"ok": False, "last_heartbeat_at": None, "age_seconds": None},
|
||||
"db": {"ok": False, "push_send_log_latest_created_at": None},
|
||||
"db_push_tokens": {"ok": False, "count": None, "latest": None},
|
||||
"now_utc": datetime.now(timezone.utc).isoformat(),
|
||||
}
|
||||
|
||||
@@ -343,5 +344,36 @@ async def scheduler_health(db: AsyncSession = Depends(get_db)) -> dict[str, Any]
|
||||
except Exception as e:
|
||||
out["db"]["error"] = f"{type(e).__name__}: {e}"
|
||||
|
||||
# 4) DB:查询 push_tokens 计数与最近一条(用于确认 /v1/push/register 是否真正落库)
|
||||
try:
|
||||
qcount = select(func.count()).select_from(PushToken)
|
||||
rcount = await db.execute(qcount)
|
||||
cnt = int(rcount.scalar_one() or 0)
|
||||
|
||||
qlatest = select(PushToken).order_by(PushToken.last_seen_at.desc()).limit(1)
|
||||
rlatest = await db.execute(qlatest)
|
||||
t = rlatest.scalar_one_or_none()
|
||||
|
||||
latest_obj = None
|
||||
if t is not None:
|
||||
tok = str(t.push_token or "")
|
||||
masked = tok[:10] + "***" + tok[-6:] if len(tok) > 20 else (tok[:6] + "***" if tok else "")
|
||||
latest_obj = {
|
||||
"id": int(getattr(t, "id", 0) or 0),
|
||||
"client_user_id": str(t.client_user_id),
|
||||
"env": str(t.env),
|
||||
"app_id": str(t.app_id),
|
||||
"platform": str(t.platform),
|
||||
"is_active": bool(t.is_active),
|
||||
"last_seen_at": t.last_seen_at.isoformat() if t.last_seen_at else None,
|
||||
"push_token_masked": masked,
|
||||
}
|
||||
|
||||
out["db_push_tokens"]["ok"] = True
|
||||
out["db_push_tokens"]["count"] = cnt
|
||||
out["db_push_tokens"]["latest"] = latest_obj
|
||||
except Exception as e:
|
||||
out["db_push_tokens"]["error"] = f"{type(e).__name__}: {e}"
|
||||
|
||||
return out
|
||||
|
||||
|
||||
Reference in New Issue
Block a user