|
7 | 7 |
|
8 | 8 | REDIS_URL = os.getenv("REDIS_URL", "redis://redis:6379/0") |
9 | 9 |
|
| 10 | +# SHOWCASE_MODE: When enabled, disables all automatic tasks to prevent API costs |
| 11 | +SHOWCASE_MODE = os.getenv("SHOWCASE_MODE", "true").lower() == "true" |
| 12 | + |
10 | 13 | celery_app = Celery( |
11 | 14 | "bluerelief_tasks", |
12 | 15 | broker=REDIS_URL, |
|
45 | 48 | # Default to running every 8 hours, but can be configured with env var |
46 | 49 | SCHEDULE_HOURS = int(os.getenv("SCHEDULE_HOURS", "8")) |
47 | 50 |
|
48 | | -celery_app.conf.beat_schedule = { |
49 | | - "collect-bluesky-data": { |
50 | | - "task": "tasks.collect_and_analyze", |
51 | | - "schedule": crontab(hour=f"*/{SCHEDULE_HOURS}", minute=0), |
52 | | - "options": {"expires": 60 * 60 * 3}, # Tasks expire after 3 hours |
53 | | - }, |
54 | | - "generate-alerts": { |
55 | | - "task": "tasks.generate_alerts", |
56 | | - "schedule": 300.0, # every 5 minutes |
57 | | - "options": { |
58 | | - "expires": 60 * 5, # Tasks expire after 5 minutes |
| 51 | +# SHOWCASE MODE: All scheduled tasks are disabled to prevent Gemini/Google API costs |
| 52 | +# The app displays existing data only - no new data collection or AI analysis |
| 53 | +if SHOWCASE_MODE: |
| 54 | + print("🎭 SHOWCASE MODE ENABLED - All scheduled tasks disabled") |
| 55 | + celery_app.conf.beat_schedule = {} |
| 56 | +else: |
| 57 | + celery_app.conf.beat_schedule = { |
| 58 | + "collect-bluesky-data": { |
| 59 | + "task": "tasks.collect_and_analyze", |
| 60 | + "schedule": crontab(hour=f"*/{SCHEDULE_HOURS}", minute=0), |
| 61 | + "options": {"expires": 60 * 60 * 3}, # Tasks expire after 3 hours |
59 | 62 | }, |
60 | | - }, |
61 | | - "manage-alert-queue": { |
62 | | - "task": "tasks.manage_alert_queue", |
63 | | - "schedule": 120.0, # every 2 minutes |
64 | | - "options": { |
65 | | - "expires": 60 * 2, # Tasks expire after 2 minutes |
| 63 | + "generate-alerts": { |
| 64 | + "task": "tasks.generate_alerts", |
| 65 | + "schedule": 300.0, # every 5 minutes |
| 66 | + "options": { |
| 67 | + "expires": 60 * 5, # Tasks expire after 5 minutes |
| 68 | + }, |
66 | 69 | }, |
67 | | - }, |
68 | | - "send-alert-emails": { |
69 | | - "task": "tasks.send_alert_emails", |
70 | | - "schedule": 120.0, # every 2 minutes |
71 | | - "options": { |
72 | | - "expires": 60 * 2, # Tasks expire after 2 minutes |
| 70 | + "manage-alert-queue": { |
| 71 | + "task": "tasks.manage_alert_queue", |
| 72 | + "schedule": 120.0, # every 2 minutes |
| 73 | + "options": { |
| 74 | + "expires": 60 * 2, # Tasks expire after 2 minutes |
| 75 | + }, |
73 | 76 | }, |
74 | | - }, |
75 | | - "cleanup-alerts": { |
76 | | - "task": "tasks.cleanup_old_alerts", |
77 | | - "schedule": crontab(hour=2, minute=0), # 2 AM daily |
78 | | - "options": { |
79 | | - "expires": 60 * 60 * 24, # Tasks expire after 24 hours |
| 77 | + "send-alert-emails": { |
| 78 | + "task": "tasks.send_alert_emails", |
| 79 | + "schedule": 120.0, # every 2 minutes |
| 80 | + "options": { |
| 81 | + "expires": 60 * 2, # Tasks expire after 2 minutes |
| 82 | + }, |
80 | 83 | }, |
81 | | - }, |
82 | | - "archive-completed-disasters": { |
83 | | - "task": "tasks.archive_completed_disasters", |
84 | | - "schedule": crontab(hour=3, minute=0), # 3 AM daily |
85 | | - "options": { |
86 | | - "expires": 60 * 60 * 24, # Tasks expire after 24 hours |
| 84 | + "cleanup-alerts": { |
| 85 | + "task": "tasks.cleanup_old_alerts", |
| 86 | + "schedule": crontab(hour=2, minute=0), # 2 AM daily |
| 87 | + "options": { |
| 88 | + "expires": 60 * 60 * 24, # Tasks expire after 24 hours |
| 89 | + }, |
87 | 90 | }, |
88 | | - }, |
89 | | -} |
| 91 | + "archive-completed-disasters": { |
| 92 | + "task": "tasks.archive_completed_disasters", |
| 93 | + "schedule": crontab(hour=3, minute=0), # 3 AM daily |
| 94 | + "options": { |
| 95 | + "expires": 60 * 60 * 24, # Tasks expire after 24 hours |
| 96 | + }, |
| 97 | + }, |
| 98 | + } |
90 | 99 |
|
91 | 100 | celery_app.conf.timezone = "UTC" |
0 commit comments