FastAPI

Página de estado y monitoreo de uptime para apps FastAPI

Monitorea endpoints FastAPI y workers async. Las aserciones JSON-path encajan con los health schemas de FastAPI. Página alojada o headless.

Tres formas de lanzar una página de estado para FastAPI

Elige el nivel de control que necesitas — sin código, low-code o headless completo.

Alojado

Añade tu endpoint FastAPI, apunta un CNAME a status.tudominio.com, listo. Funciona en 5 minutos.

Headless

Usa nuestra API pública para construir tu propia UI dentro de tu app FastAPI. Control total sobre diseño y marca.

Ver la API

Badges embebidos

Coloca badges SVG de uptime y estado en tu README o landing page. Se actualizan cada 5 minutos.

Pega este health endpoint en tu app FastAPI

Copia, pega, apunta PulseAPI a la URL. Devuelve 200 sano, 503 degradado.

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}

Monta el router en tu app principal. Devuelve 503 en fallo parcial para marcar degradado. JSON-path asertea nativamente el schema.

Qué se rompe en apps FastAPI — y cómo detectarlo

Deadlocks async

Un `await` olvidado o llamada sync en contexto async bloquea el event loop. Los spikes de tiempo lo revelan al instante.

Bugs de migración Pydantic v1→v2

Cambios de validación rompen endpoints en silencio. Aserciones body JSON detectan regresiones de schema.

Caídas upstream

APIs de terceros caen y tus endpoints devuelven 502. PulseAPI lo detecta antes que los usuarios.

Enfoque headless

¿No te gusta nuestra página de estado? Construye la tuya en FastAPI.

Nuestra API devuelve los mismos datos que consume nuestra UI alojada. Spec OpenAPI completa en api.pulseapi.tech/docs.

Endpoint FastAPI que proxy-ea nuestros datos de estado a tu propio /status.
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()

Monitoreo FastAPI — FAQ

¿Funciona con FastAPI, Starlette y Quart?

Sí. Los tres exponen HTTP estándar y se monitorean igual.

¿Puedo monitorear workers de background (Dramatiq, Arq, Celery)?

Sí. Expón un endpoint que haga round-trip de una tarea por el worker. Devuelve 503 si falla o hace timeout.

¿Cómo manejo respuestas Pydantic v1 vs v2?

A PulseAPI le da igual — asertea sobre el JSON final. Tu schema puede cambiar mientras los campos aserteados se mantengan.

¿Puedo renderizar la página de estado dentro de FastAPI?

Sí. Llama la API y renderiza con Jinja2, o devuelve el JSON a un frontend. La forma está en la spec OpenAPI.

Empieza a monitorear tu app FastAPI en 5 minutos

Plan gratuito. Sin tarjeta. Añade tu endpoint y recibe alertas cuando falle.