FastAPI

Page de statut et monitoring d'uptime pour applications FastAPI

Monitorez endpoints FastAPI et workers async. Les assertions JSON-path mappent naturellement sur les health schemas FastAPI. Hébergée ou headless.

Trois façons de livrer une page de statut pour FastAPI

Choisissez le niveau de contrôle — sans code, low-code, ou full headless.

Hébergé

Ajoutez votre endpoint FastAPI, pointez un CNAME sur status.votredomaine.com, fini. Marche en 5 minutes.

Headless

Utilisez notre API publique pour construire votre propre UI dans votre app FastAPI. Contrôle total du design et du branding.

Voir l'API

Badges embarqués

Intégrez des badges SVG uptime et statut dans votre README ou landing. Mise à jour toutes les 5 minutes.

Collez ce health endpoint dans votre app FastAPI

Copiez, collez, pointez PulseAPI sur l'URL. Renvoie 200 sain, 503 dégradé.

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}

Montez le router sur votre app principale. Renvoyez 503 en panne partielle pour marquer dégradé. JSON-path marche nativement sur le schema.

Ce qui casse dans les apps FastAPI — et comment le détecter

Deadlocks async

Un `await` oublié ou appel sync en contexte async bloque l'event loop. Les pics de temps le révèlent instantanément.

Bugs de migration Pydantic v1→v2

Les changements de validation cassent des endpoints en silence. Les assertions body JSON attrapent les régressions.

Pannes upstream

Les APIs externes tombent et vos endpoints renvoient des 502. PulseAPI le détecte avant les utilisateurs.

Approche headless

Notre page de statut ne vous plaît pas ? Construisez la vôtre dans FastAPI.

Notre API renvoie les mêmes données que notre UI hébergée consomme. Spec OpenAPI complète sur api.pulseapi.tech/docs.

Endpoint FastAPI qui proxy les données de statut vers votre propre /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()

Monitoring FastAPI — FAQ

Ça marche avec FastAPI, Starlette et Quart ?

Oui. Les trois exposent du HTTP standard et se monitorent pareillement.

Puis-je monitorer des workers background (Dramatiq, Arq, Celery) ?

Oui. Exposez un endpoint qui fait un round-trip de tâche. Renvoyez 503 si ça échoue ou timeout.

Comment gérer les réponses Pydantic v1 vs v2 ?

PulseAPI s'en fiche — il asserte sur le JSON final. Votre schema peut changer tant que les champs assertés restent.

Puis-je rendre la page de statut dans FastAPI ?

Oui. Récupérez l'API et rendez avec Jinja2, ou renvoyez le JSON à un frontend. La forme est dans la spec OpenAPI.

Commencez à monitorer votre app FastAPI en 5 minutes

Version gratuite. Sans carte. Ajoutez votre endpoint et recevez des alertes en cas de panne.