Spaces:
Runtime error
Runtime error
Download app/utils.py from reco-team/reco-efficientnet-api: direct link, hf CLI and curl.
- Browser
- Download file 1.9 kB
-
https://huggingface.co/spaces/reco-team/reco-efficientnet-api/resolve/main/app/utils.py
- Command line
-
hf download hf://spaces/reco-team/reco-efficientnet-api/app/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/reco-team/reco-efficientnet-api/resolve/main/app/utils.py
1.9 kB
| 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) |