Spaces:
Configuration error
Configuration error
Download keepalive.py from SynergixAI/Synergix: direct link, hf CLI and curl.
- Browser
- Download file 1.59 kB
-
https://huggingface.co/spaces/SynergixAI/Synergix/resolve/main/keepalive.py
- Command line
-
hf download hf://spaces/SynergixAI/Synergix/keepalive.py
-
curl -L -o keepalive.py https://huggingface.co/spaces/SynergixAI/Synergix/resolve/main/keepalive.py
1.59 kB
| # keepalive.py | |
| """ | |
| Keep-alive para Hugging Face Spaces. | |
| HF duerme los Spaces gratuitos tras 15 min sin tráfico. | |
| Este script se pinga a sí mismo cada 4 minutos para mantenerlo activo. | |
| También hace ping externo a UptimeRobot si se configura UPTIME_URL. | |
| """ | |
| import os | |
| import time | |
| import urllib.request | |
| import urllib.error | |
| from datetime import datetime | |
| # URL del propio Space — HF la inyecta como variable de entorno | |
| # Formato: https://TU_USUARIO-synergix.hf.space | |
| SPACE_URL = os.getenv("SPACE_URL", "http://localhost:7860") | |
| UPTIME_URL = os.getenv("UPTIME_URL", "") # opcional: UptimeRobot webhook | |
| INTERVAL = 240 # 4 minutos (HF duerme tras 15 min sin tráfico) | |
| def ping(url: str, label: str) -> bool: | |
| try: | |
| req = urllib.request.Request( | |
| url, | |
| headers={"User-Agent": "Synergix-Keepalive/2.0"}, | |
| ) | |
| with urllib.request.urlopen(req, timeout=10) as resp: | |
| status = resp.status | |
| print(f"[{datetime.now().strftime('%H:%M:%S')}] ✅ {label} → HTTP {status}", flush=True) | |
| return status == 200 | |
| except Exception as e: | |
| print(f"[{datetime.now().strftime('%H:%M:%S')}] ⚠️ {label} ping falló: {e}", flush=True) | |
| return False | |
| if __name__ == "__main__": | |
| print(f"🔄 Keepalive iniciado → Space: {SPACE_URL} | Intervalo: {INTERVAL}s", flush=True) | |
| time.sleep(15) # Esperar a que el health server arranque | |
| while True: | |
| ping(f"{SPACE_URL}/health", "Self-ping") | |
| if UPTIME_URL: | |
| ping(UPTIME_URL, "UptimeRobot") | |
| time.sleep(INTERVAL) | |