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'APIBadges 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é.
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.
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.
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.