enflow-api / celery_config.py
dhruv575
Set up Redis
be84080
import os
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
# Celery configuration with hosted Redis server
redis_password = os.environ.get('REDIS_PASSWORD')
# Make sure to set these environment variables with the correct values
redis_host = os.environ.get('REDIS_HOST')
redis_port = os.environ.get('REDIS_PORT', '6379')
# Validate that we have the host information
if not redis_host:
raise ValueError("REDIS_HOST environment variable must be set")
redis_url = f"redis://:{redis_password}@{redis_host}:{redis_port}/0"
broker_url = os.environ.get('REDIS_URL', redis_url)
result_backend = os.environ.get('REDIS_URL', redis_url)
# Task serialization format
task_serializer = 'json'
accept_content = ['json']
result_serializer = 'json'
# Enable UTC timezone
enable_utc = True
# Task execution settings
task_acks_late = True
task_reject_on_worker_lost = True
worker_max_tasks_per_child = 1000
# Task timeouts
task_time_limit = 600 # 10 minutes
task_soft_time_limit = 300 # 5 minutes
# Task routes
task_routes = {
'utils.celery_tasks.process_log_document': {'queue': 'logs'},
'utils.celery_tasks.process_incident_forms': {'queue': 'incidents'},
}
# Rate limits
task_annotations = {
'utils.celery_tasks.process_log_document': {'rate_limit': '10/h'},
'utils.celery_tasks.process_incident_forms': {'rate_limit': '20/h'},
}