This commit is contained in:
pacnpal
2025-09-21 20:04:42 -04:00
parent 42a3dc7637
commit 75cc618c2b
610 changed files with 1719 additions and 4816 deletions

View File

@@ -1,74 +0,0 @@
"""
Celery configuration for ThrillWiki.
This module sets up Celery for background task processing including:
- Trending calculations
- Cache warming
- Analytics processing
- Email notifications
"""
import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.django.local")
app = Celery("thrillwiki")
# Get Redis URL from environment variable with fallback
REDIS_URL = os.environ.get("REDIS_URL", "redis://localhost:6379/1")
# Celery Configuration - set directly without loading from Django settings first
app.conf.update(
# Broker settings
broker_url=REDIS_URL,
result_backend=REDIS_URL,
# Task settings
task_serializer="json",
accept_content=["json"],
result_serializer="json",
timezone="America/New_York",
enable_utc=True,
# Worker settings
worker_prefetch_multiplier=1,
task_acks_late=True,
worker_max_tasks_per_child=1000,
# Task routing
task_routes={
"apps.core.tasks.trending.*": {"queue": "trending"},
"apps.core.tasks.analytics.*": {"queue": "analytics"},
"apps.core.tasks.cache.*": {"queue": "cache"},
},
# Beat schedule for periodic tasks
beat_schedule={
"calculate-trending-content": {
"task": "apps.core.tasks.trending.calculate_trending_content",
"schedule": 300.0, # Every 5 minutes
},
"warm-trending-cache": {
"task": "apps.core.tasks.trending.warm_trending_cache",
"schedule": 900.0, # Every 15 minutes
},
"cleanup-old-analytics": {
"task": "apps.core.tasks.analytics.cleanup_old_analytics",
"schedule": 86400.0, # Daily
},
},
# Task result settings
result_expires=3600, # 1 hour
task_ignore_result=False,
# Error handling
task_reject_on_worker_lost=True,
task_soft_time_limit=300, # 5 minutes
task_time_limit=600, # 10 minutes
)
# Load task modules from all registered Django apps.
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
"""Debug task for testing Celery setup."""
print(f"Request: {self.request!r}")