Spaces:
Running
Running
milwright
commited on
Commit
·
b685714
1
Parent(s):
554bdb9
fix: handle missing redis modules gracefully
Browse files
app.py
CHANGED
|
@@ -17,8 +17,15 @@ import logging
|
|
| 17 |
load_dotenv()
|
| 18 |
|
| 19 |
# Import Leaderboard Services (Redis primary, HF fallback)
|
| 20 |
-
|
| 21 |
-
from
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
|
| 23 |
# Configure logging
|
| 24 |
logging.basicConfig(level=logging.INFO)
|
|
@@ -37,31 +44,39 @@ app.add_middleware(
|
|
| 37 |
|
| 38 |
# Initialize Leaderboard Service (Redis primary, HF Space fallback)
|
| 39 |
# REDIS_URL is auto-injected by Railway when Redis plugin is added
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
# Initialize Analytics Service (Redis)
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
|
| 66 |
# Pydantic models for API
|
| 67 |
class LeaderboardEntry(BaseModel):
|
|
|
|
| 17 |
load_dotenv()
|
| 18 |
|
| 19 |
# Import Leaderboard Services (Redis primary, HF fallback)
|
| 20 |
+
try:
|
| 21 |
+
from redis_leaderboard import RedisLeaderboardService
|
| 22 |
+
except ImportError:
|
| 23 |
+
RedisLeaderboardService = None
|
| 24 |
+
|
| 25 |
+
try:
|
| 26 |
+
from redis_analytics import RedisAnalyticsService
|
| 27 |
+
except ImportError:
|
| 28 |
+
RedisAnalyticsService = None
|
| 29 |
|
| 30 |
# Configure logging
|
| 31 |
logging.basicConfig(level=logging.INFO)
|
|
|
|
| 44 |
|
| 45 |
# Initialize Leaderboard Service (Redis primary, HF Space fallback)
|
| 46 |
# REDIS_URL is auto-injected by Railway when Redis plugin is added
|
| 47 |
+
leaderboard_service = None
|
| 48 |
+
if RedisLeaderboardService:
|
| 49 |
+
try:
|
| 50 |
+
leaderboard_service = RedisLeaderboardService(
|
| 51 |
+
redis_url=os.getenv("REDIS_URL"),
|
| 52 |
+
hf_fallback_url="https://milwright-cloze-leaderboard.hf.space",
|
| 53 |
+
hf_token=os.getenv("HF_TOKEN"),
|
| 54 |
+
)
|
| 55 |
+
if leaderboard_service.is_redis_available():
|
| 56 |
+
logger.info("Leaderboard using Redis (primary) with HF Space (fallback)")
|
| 57 |
+
else:
|
| 58 |
+
logger.info("Leaderboard using HF Space (Redis unavailable)")
|
| 59 |
+
except Exception as e:
|
| 60 |
+
logger.warning(f"Could not initialize Leaderboard Service: {e}")
|
| 61 |
+
logger.warning("Leaderboard will use localStorage fallback only")
|
| 62 |
+
leaderboard_service = None
|
| 63 |
+
else:
|
| 64 |
+
logger.info("Leaderboard module not available - using localStorage only")
|
| 65 |
|
| 66 |
# Initialize Analytics Service (Redis)
|
| 67 |
+
analytics_service = None
|
| 68 |
+
if RedisAnalyticsService:
|
| 69 |
+
try:
|
| 70 |
+
analytics_service = RedisAnalyticsService(redis_url=os.getenv("REDIS_URL"))
|
| 71 |
+
if analytics_service.is_available():
|
| 72 |
+
logger.info("Analytics Service using Redis")
|
| 73 |
+
else:
|
| 74 |
+
logger.info("Analytics Service unavailable (Redis not connected)")
|
| 75 |
+
except Exception as e:
|
| 76 |
+
logger.warning(f"Could not initialize Analytics Service: {e}")
|
| 77 |
+
analytics_service = None
|
| 78 |
+
else:
|
| 79 |
+
logger.info("Analytics module not available")
|
| 80 |
|
| 81 |
# Pydantic models for API
|
| 82 |
class LeaderboardEntry(BaseModel):
|