milwright commited on
Commit
b685714
·
1 Parent(s): 554bdb9

fix: handle missing redis modules gracefully

Browse files
Files changed (1) hide show
  1. app.py +40 -25
app.py CHANGED
@@ -17,8 +17,15 @@ import logging
17
  load_dotenv()
18
 
19
  # Import Leaderboard Services (Redis primary, HF fallback)
20
- from redis_leaderboard import RedisLeaderboardService
21
- from redis_analytics import RedisAnalyticsService
 
 
 
 
 
 
 
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
- try:
41
- leaderboard_service = RedisLeaderboardService(
42
- redis_url=os.getenv("REDIS_URL"),
43
- hf_fallback_url="https://milwright-cloze-leaderboard.hf.space",
44
- hf_token=os.getenv("HF_TOKEN"),
45
- )
46
- if leaderboard_service.is_redis_available():
47
- logger.info("Leaderboard using Redis (primary) with HF Space (fallback)")
48
- else:
49
- logger.info("Leaderboard using HF Space (Redis unavailable)")
50
- except Exception as e:
51
- logger.warning(f"Could not initialize Leaderboard Service: {e}")
52
- logger.warning("Leaderboard will use localStorage fallback only")
53
- leaderboard_service = None
 
 
 
 
54
 
55
  # Initialize Analytics Service (Redis)
56
- try:
57
- analytics_service = RedisAnalyticsService(redis_url=os.getenv("REDIS_URL"))
58
- if analytics_service.is_available():
59
- logger.info("Analytics Service using Redis")
60
- else:
61
- logger.info("Analytics Service unavailable (Redis not connected)")
62
- except Exception as e:
63
- logger.warning(f"Could not initialize Analytics Service: {e}")
64
- analytics_service = None
 
 
 
 
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):