Module API (Inférence)

Module de l’API FastAPI pour l’inférence MLOps.

Ce module expose les routes REST permettant aux utilisateurs de soumettre des données pour prédiction. Il délègue le calcul lourd à un worker asynchrone via Celery et RabbitMQ.

class src.api.main.Features(*args: Any, **kwargs: Any)[source]

Bases : BaseModel

Représente les caractéristiques d’une fleur d’Iris.

sepal_length

La longueur du sépale en cm.

Type:

float

sepal_width

La largeur du sépale en cm.

Type:

float

petal_length

La longueur du pétale en cm.

Type:

float

petal_width

La largeur du pétale en cm.

Type:

float

petal_length: float
petal_width: float
sepal_length: float
sepal_width: float
async src.api.main.create_prediction_task(features: Features) dict[str, Any]

Soumet une tâche de prédiction au broker de messages.

Au lieu de réaliser la prédiction de manière synchrone, cette route envoie les données au worker Celery et retourne immédiatement un identifiant de tâche (Task ID) au client.

Paramètres:

features (Features) – Les mesures de la fleur envoyées par le client.

Renvoie:

Un dictionnaire contenant un message de confirmation et

le task_id permettant de suivre l’avancement.

Type renvoyé:

dict[str, Any]

Lève:

HTTPException – Si le broker (RabbitMQ/Redis) est injoignable (Erreur 503).

async src.api.main.get_prediction_status(task_id: str) dict[str, Any]

Vérifie le statut d’une tâche de prédiction asynchrone.

Cette route est interrogée par le client (ex: Streamlit) pour savoir si le worker Celery a terminé son calcul.

Paramètres:

task_id (str) – L’identifiant unique de la tâche retourné par /predict.

Renvoie:

L’état actuel de la tâche (en cours, terminé, ou erreur)

ainsi que la prédiction si elle est terminée.

Type renvoyé:

dict[str, Any]

async src.api.main.health_check() dict[str, str]

Sonde de vie pour le monitoring (Uptime Kuma/Kubernetes).

Renvoie:

Le statut de santé de l’API.

Type renvoyé:

dict[str, str]

async src.api.main.root() dict[str, str]

Route d’accueil de l’API.

Renvoie:

Un message de bienvenue simple.

Type renvoyé:

dict[str, str]