k1rl-quasar / sleep_prevention.py
RealComp's picture
Upload 32 files
047d482 verified
Raw
History Blame Contribute Delete
3.6 kB
"""
============================================================================
K1RL QUASAR — Sleep Prevention Service
============================================================================
Prevents HuggingFace Spaces from sleeping after 48 hours of inactivity
by self-pinging every 30 minutes and simulating visitor activity
============================================================================
"""
import time
import logging
import requests
import threading
import os
import sys
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s [SLEEP-PREVENTION] %(levelname)s: %(message)s',
handlers=[
logging.StreamHandler(sys.stdout),
logging.FileHandler('/home/user/app/logs/sleep_prevention.log', mode='a')
]
)
log = logging.getLogger('sleep_prevention')
# Configuration
PING_INTERVAL = 1800 # 30 minutes in seconds
HEALTH_ENDPOINT = "http://localhost:7860/health"
DASHBOARD_ENDPOINT = "http://localhost:7860/"
SPACE_URL = os.environ.get('SPACE_URL', 'https://KarlQuant-k1rl-quasar.hf.space')
def self_ping():
"""Ping our own endpoints to maintain activity"""
try:
# Ping health endpoint
response = requests.get(HEALTH_ENDPOINT, timeout=10)
if response.status_code == 200:
log.info(f"✅ Health ping successful: {response.status_code}")
else:
log.warning(f"⚠️ Health ping returned: {response.status_code}")
# Ping dashboard endpoint
response = requests.get(DASHBOARD_ENDPOINT, timeout=10)
if response.status_code == 200:
log.info(f"✅ Dashboard ping successful: {response.status_code}")
else:
log.warning(f"⚠️ Dashboard ping returned: {response.status_code}")
except requests.exceptions.RequestException as e:
log.error(f"❌ Self-ping failed: {e}")
except Exception as e:
log.error(f"❌ Unexpected ping error: {e}")
def external_ping():
"""Ping external Space URL if available"""
if SPACE_URL and SPACE_URL.startswith('https://'):
try:
response = requests.get(f"{SPACE_URL}/health", timeout=15)
if response.status_code == 200:
log.info(f"🌐 External ping successful: {SPACE_URL}")
else:
log.warning(f"⚠️ External ping returned: {response.status_code}")
except Exception as e:
log.debug(f"External ping failed (normal if Space not public): {e}")
def run_prevention_loop():
"""Main sleep prevention loop"""
log.info("🛡️ Sleep Prevention Service started")
log.info(f" Ping interval: {PING_INTERVAL}s ({PING_INTERVAL//60} minutes)")
log.info(f" Local health: {HEALTH_ENDPOINT}")
log.info(f" Space URL: {SPACE_URL}")
ping_count = 0
while True:
try:
ping_count += 1
log.info(f"🏓 Sleep prevention ping #{ping_count}")
# Ping local endpoints
self_ping()
# Ping external Space URL
external_ping()
# Log uptime info
uptime_hours = (ping_count * PING_INTERVAL) / 3600
log.info(f"⏱️ Service uptime: {uptime_hours:.1f} hours")
except Exception as e:
log.error(f"❌ Prevention loop error: {e}")
# Wait until next ping
time.sleep(PING_INTERVAL)
if __name__ == '__main__':
run_prevention_loop()