""" Configuración de Celery para tareas en background. """ from celery import Celery from celery.schedules import crontab from app.core.config import settings # Crear aplicación Celery celery_app = Celery( "social_automation", broker=settings.REDIS_URL, backend=settings.REDIS_URL, include=[ "worker.tasks.generate_content", "worker.tasks.publish_post", "worker.tasks.fetch_interactions", "worker.tasks.cleanup" ] ) # Configuración celery_app.conf.update( task_serializer="json", accept_content=["json"], result_serializer="json", timezone="America/Tijuana", enable_utc=True, task_track_started=True, task_time_limit=300, # 5 minutos máximo por tarea worker_prefetch_multiplier=1, worker_concurrency=2 ) # Programación de tareas periódicas celery_app.conf.beat_schedule = { # Generar contenido cada hora "generate-scheduled-content": { "task": "worker.tasks.generate_content.generate_scheduled_content", "schedule": crontab(minute=0), # Cada hora en punto }, # Publicar posts programados cada minuto "publish-scheduled-posts": { "task": "worker.tasks.publish_post.publish_scheduled_posts", "schedule": crontab(minute="*"), # Cada minuto }, # Obtener interacciones cada 5 minutos "fetch-interactions": { "task": "worker.tasks.fetch_interactions.fetch_all_interactions", "schedule": crontab(minute="*/5"), # Cada 5 minutos }, # Limpieza diaria a las 3 AM "daily-cleanup": { "task": "worker.tasks.cleanup.daily_cleanup", "schedule": crontab(hour=3, minute=0), }, }