Spaces:
Runtime error
Runtime error
| 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) |