Spaces:
Sleeping
Sleeping
| from contextlib import asynccontextmanager | |
| import mlflow | |
| from fastapi import FastAPI | |
| from fastapi.responses import RedirectResponse | |
| from src.config import ( | |
| MLFLOW_TRACKING_URI, | |
| MODEL_SOURCE, | |
| FINAL_MODEL_PATH, | |
| HF_MODEL_REPO, | |
| HF_TOKEN, | |
| ) | |
| from src.recommendations.loader import load_model | |
| from src.api.monitoring.metadata import load_crops_by_area_from_db | |
| from src.api.routes.prediction import router as prediction_router | |
| from src.api.routes.recommendation import router as recommendation_router | |
| from src.api.routes.metadata import router as metadata_router | |
| from src.api.monitoring.routes import router as monitoring_router | |
| async def lifespan(app: FastAPI): | |
| mlflow.set_tracking_uri(MLFLOW_TRACKING_URI) | |
| mlflow.set_registry_uri(MLFLOW_TRACKING_URI) | |
| app.state.model = load_model( | |
| model_source=MODEL_SOURCE, | |
| local_path=FINAL_MODEL_PATH, | |
| hf_repo=HF_MODEL_REPO, | |
| hf_token=HF_TOKEN, | |
| ) | |
| app.state.crops_by_area = load_crops_by_area_from_db() | |
| yield | |
| app = FastAPI( | |
| title="API de Prédiction de Rendement et Recommandation de Cultures", | |
| lifespan=lifespan, | |
| ) | |
| def root(): | |
| return RedirectResponse(url="/docs") | |
| def health(): | |
| return {"status": "ok"} | |
| app.include_router(prediction_router) | |
| app.include_router(recommendation_router) | |
| app.include_router(metadata_router) | |
| app.include_router(monitoring_router) |