Implementación inicial del sistema de automatización de redes sociales
- Estructura completa del proyecto con FastAPI - Modelos de base de datos (productos, servicios, posts, calendario, interacciones) - Publishers para X, Threads, Instagram, Facebook - Generador de contenido con DeepSeek API - Worker de Celery con tareas programadas - Dashboard básico con templates HTML - Docker Compose para despliegue - Documentación completa Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
61
worker/celery_app.py
Normal file
61
worker/celery_app.py
Normal file
@@ -0,0 +1,61 @@
|
||||
"""
|
||||
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),
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user