import requests import time from app.log import logger from app.config import MODEL_NAME, ORCHESTRATOR_URL, OWN_URL,MODEL_TYPE def heartbeat(): while True: try: response = requests.post( f"{ORCHESTRATOR_URL}/heartbeat", json={"model_name": MODEL_NAME}, timeout=5 ) if response.status_code == 200: logger.info(f"💓 Heartbeat envoyé pour {MODEL_NAME}") elif response.status_code == 404: logger.warning(f"⚠️ Modèle inconnu dans orchestrateur (404) → tentative de réenregistrement") # Tentative de réenregistrement à chaud register_with_orchestrator() else: logger.warning(f"⚠️ Heartbeat refusé ({response.status_code}) : {response.text}") except Exception as e: logger.error(f"❌ Erreur lors du heartbeat : {e}") time.sleep(60) def register_with_orchestrator(): try: logger.info(f"📡 Tentative d'enregistrement de {MODEL_NAME} à l'orchestrateur...") response = requests.post( f"{ORCHESTRATOR_URL}/register_model", json={"model_name": MODEL_NAME, "model_type": MODEL_TYPE,"url": f"{OWN_URL}"} ) if response.status_code == 200: logger.info("✅ Modèle enregistré avec succès") return True else: logger.info(f"⚠️ Échec enregistrement : {response.text}") return False except Exception as e: logger.info(f"❌ Erreur d'enregistrement : {e}") def register_forever(interval=30): while True: success = register_with_orchestrator() if success: break # On arrête de réessayer logger.info(f"⏳ Nouvel essai dans {interval} secondes...") time.sleep(interval)