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() |