FastAPI

面向 FastAPI 应用的状态页和正常运行时间监控

监控 FastAPI 端点和异步 worker。JSON-path 断言与 FastAPI 健康 schema 契合。托管或 headless。

为 FastAPI 发布状态页的三种方式

选择所需的控制级别 — 零代码、低代码或完全 headless。

托管

添加 FastAPI 端点,把 CNAME 指向 status.yourdomain.com,完成。5 分钟搞定。

Headless

通过公共 API 在你的 FastAPI 应用内构建自有 UI,完全掌控设计与品牌。

查看 API

嵌入式徽章

将 SVG 正常运行时间和状态徽章放入 README 或落地页。每 5 分钟自动更新。

把这个 health 端点加入你的 FastAPI 应用

复制、粘贴、把 PulseAPI 指向 URL。健康时返回 200,降级时返回 503。

app/health.py
from fastapi import APIRouter, Response
from sqlalchemy import text
from .db import engine
from .redis import redis

router = APIRouter()


@router.get("/health")
async def health(response: Response) -> dict:
    checks: dict[str, str] = {}
    try:
        async with engine.connect() as conn:
            await conn.execute(text("SELECT 1"))
        checks["database"] = "ok"
    except Exception:
        checks["database"] = "fail"
    try:
        pong = await redis.ping()
        checks["cache"] = "ok" if pong else "fail"
    except Exception:
        checks["cache"] = "fail"
    healthy = all(v == "ok" for v in checks.values())
    response.status_code = 200 if healthy else 503
    return {"status": "healthy" if healthy else "degraded", **checks}

把 router 挂到主应用上。部分故障时返回 503 标记降级。JSON-path 断言在返回 schema 上原生可用。

FastAPI 应用会出什么故障 — 如何捕获

异步死锁

遗漏的 `await` 或 async 上下文中的同步调用阻塞事件循环。响应时间突增立即揭示问题。

Pydantic v1→v2 迁移 bug

模型验证变化悄然破坏端点。JSON body 断言捕获 schema 回归。

上游故障

依赖宕机导致端点 502。PulseAPI 在用户报告前发现并告警。

Headless 视角

不喜欢我们的状态页? 用 FastAPI 自己构建。

我们的 API 返回的数据与托管 UI 完全一致。完整 OpenAPI 规范见 api.pulseapi.tech/docs.

将状态数据代理到你自己 /status 的 FastAPI 端点。
import httpx
from fastapi import APIRouter

router = APIRouter()


@router.get("/status")
async def status():
    async with httpx.AsyncClient(timeout=5) as client:
        r = await client.get("https://api.pulseapi.tech/status/acme")
        r.raise_for_status()
        return r.json()

FastAPI 监控 — FAQ

能与 FastAPI、Starlette 和 Quart 一起使用吗?

可以。三者都暴露标准 HTTP,以同样方式监控。

能否监控后台 worker (Dramatiq、Arq、Celery)?

可以。健康端点通过 worker 跑往返任务,失败或超时返回 503。

如何处理 Pydantic v1 与 v2 的响应?

PulseAPI 只断言最终 JSON。只要断言字段保留,schema 可以在版本间变化。

能否在 FastAPI 内渲染状态页?

可以。用 Jinja2 渲染获取的 API,或把 JSON 返回给前端。结构详见我们的 OpenAPI 规范。

5 分钟开始监控你的 FastAPI 应用

免费套餐,无需信用卡。添加端点,故障时接收告警。