FastAPI

Página de status e monitoramento de uptime para apps FastAPI

Monitore endpoints FastAPI e workers async. Asserções JSON-path mapeiam nos health schemas do FastAPI. Hospedada ou headless.

Três formas de lançar uma página de status para FastAPI

Escolha o nível de controle — sem código, low-code ou headless completo.

Hospedado

Adicione seu endpoint FastAPI, aponte um CNAME para status.seudominio.com, pronto. Em 5 minutos.

Headless

Use nossa API pública para construir sua própria UI dentro do app FastAPI. Controle total sobre design e marca.

Ver a API

Badges embutidos

Coloque badges SVG de uptime e status no seu README ou landing page. Atualizam a cada 5 minutos.

Cole este health endpoint no seu app FastAPI

Copie, cole, aponte o PulseAPI para a URL. Retorna 200 saudável, 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}

Monte o router no app principal. Retorne 503 em falha parcial para marcar degradado. JSON-path roda nativamente no schema.

O que quebra em apps FastAPI — e como detectar

Deadlocks async

Um `await` esquecido ou sync em contexto async trava o event loop. Picos de tempo de resposta mostram na hora.

Bugs de migração Pydantic v1→v2

Mudanças de validação quebram endpoints em silêncio. Asserções sobre body JSON pegam regressões.

Quedas upstream

Dependências caem e endpoints retornam 502. O PulseAPI pega isso antes dos usuários.

Abordagem headless

Não gostou da nossa página de status? Construa a sua em FastAPI.

Nossa API retorna os mesmos dados que nossa UI hospedada consome. Spec OpenAPI completa em api.pulseapi.tech/docs.

Endpoint FastAPI que proxy os dados de status para seu próprio /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()

Monitoramento FastAPI — FAQ

Funciona com FastAPI, Starlette e Quart?

Sim. Os três expõem HTTP padrão e são monitorados do mesmo jeito.

Posso monitorar workers de background (Dramatiq, Arq, Celery)?

Sim. Exponha um endpoint que faz round-trip de tarefa pelo worker. Retorne 503 se falhar ou timeout.

Como lido com respostas Pydantic v1 vs v2?

O PulseAPI não liga — ele asserta no JSON final. Seu schema pode mudar desde que os campos assertados permaneçam.

Posso renderizar a página de status dentro do FastAPI?

Sim. Consuma a API e renderize com Jinja2, ou retorne JSON para um frontend. Formato na nossa spec OpenAPI.

Comece a monitorar seu app FastAPI em 5 minutos

Plano grátis. Sem cartão. Adicione seu endpoint e receba alertas quando quebrar.