Spaces:
Sleeping
Sleeping
""" | |
Configuration du serveur FastAPI. | |
""" | |
import os | |
import logging | |
from fastapi import FastAPI, Request | |
from fastapi.middleware.cors import CORSMiddleware | |
from fastapi.responses import JSONResponse | |
from dotenv import load_dotenv | |
from app import __version__ | |
from app.api.routes import router | |
# Chargement des variables d'environnement | |
load_dotenv() | |
# Configuration | |
API_HOST = os.getenv("API_HOST", "0.0.0.0") | |
API_PORT = int(os.getenv("API_PORT", 8000)) | |
# Création de l'application FastAPI | |
app = FastAPI( | |
title="Web Scraper et Convertisseur Markdown API", | |
description=""" | |
API pour scraper des sites web, nettoyer le contenu et le convertir en Markdown. | |
Idéal pour préparer des données pour les systèmes d'IA. | |
""", | |
version=__version__, | |
docs_url="/docs", | |
redoc_url="/redoc", | |
) | |
# Configuration CORS | |
app.add_middleware( | |
CORSMiddleware, | |
allow_origins=["*"], # Pour la production, limitez aux domaines autorisés | |
allow_credentials=True, | |
allow_methods=["*"], | |
allow_headers=["*"], | |
) | |
# Enregistrement des routes | |
app.include_router(router, prefix="/api") | |
# Gestionnaire d'exceptions | |
async def global_exception_handler(request: Request, exc: Exception): | |
"""Gestionnaire global des exceptions.""" | |
logging.error(f"Exception non gérée: {str(exc)}") | |
return JSONResponse( | |
status_code=500, | |
content={"detail": f"Erreur interne du serveur: {str(exc)}"} | |
) | |
# Route racine | |
async def root(): | |
"""Page d'accueil de l'API.""" | |
return { | |
"name": "Web Scraper et Convertisseur Markdown API", | |
"version": __version__, | |
"docs": "/docs", | |
"redoc": "/redoc" | |
} | |
# Vérification de la santé de l'API | |
async def health_check(): | |
"""Vérification de la santé de l'API.""" | |
return {"status": "ok", "version": __version__} | |
def start(): | |
"""Démarrage du serveur avec uvicorn.""" | |
import uvicorn | |
uvicorn.run( | |
"app.api.server:app", | |
host=API_HOST, | |
port=API_PORT, | |
reload=True | |
) | |
if __name__ == "__main__": | |
start() |