Comparativa independiente · sin rankings de pago
Inicio / Blog / Técnico / Apio: evita que una cola de tareas se convierta en una caja negra

Apio: evita que una cola de tareas se convierta en una caja negra

Celery acepta trabajos y luego los olvida si nadie monitorea las colas, los trabajadores muertos y las tareas atascadas en un reintento silencioso.

Redacción Hébergeurs.eu 6 min Actualizado 19 jul. 2026

Marketing lanza una campaña de correo electrónico a 50.000 contactos. La interfaz responde “envío programado”. Tres horas después: 200 correos electrónicos enviados. Flower es inaccesible, la cola de emails de Redis muestra 48.000 mensajes pendientes y los trabajadores de exportación de PDF han estado monopolizando el grupo desde el cron de la mañana. Nadie advirtió sobre la profundidad de la fila: Celery “caminó”, los trabajos esperaron en la oscuridad.

El apio se desacopla asíncrono: mueve la visibilidad. Sin la supervisión del agente, la política de reintento y la separación de archivos, habrá reemplazado una solicitud HTTP lenta con un acumulación invisible que arruina el negocio horas más tarde.

Arquitectura observable

ComponentePapel en la observabilidad
CorredorProfundidad de la cola, tasa de publicación
TrabajadoresCompetencia, captación previa
FlorInterfaz de tareas activas y fallidas
Resultados de backenddjango-apio-resultados en base
Métricasapio_exportar a Prometeo

Alertas mínimas:

  • queue_length > 1000 durante diez minutos
  • Tasa máxima de fracaso de tareas
  • Ausencia de latidos del corazón trabajador.

Una tarea sin retraso máximo ocupa a un trabajador hasta que se reinicia.

Configurar tareas saludables


@app.task(bind=Verdadero, max_retries=3, default_retry_delay=60,

          soft_time_limit=300, time_limit=360)

def enviar_campaña(self, lote_id):

    ...

  • acks_late=True: reconocimiento después del éxito: consulta si el trabajador falla durante la tarea.
  • reject_on_worker_lost dependiendo del corredor.
  • Enrutamiento: trabajos grandes a la cola "pesada", correos electrónicos a la cola "rápida".

Prefetch: worker_prefetch_multiplier=1 para trabajos largos: evita que un trabajador monopolice la cola.

Cola muerta e inspección de fallas

Después del máximo de intentos:

  • Almacenar excepciones y argumentos en la base (django-celery-results).
  • Notificar al equipo de operaciones en un canal dedicado con el contexto necesario para reiniciar correctamente.
  • Proporcionar una interfaz de administración para reiniciar manualmente después de la corrección.

No hagas "reintentar para siempre": un mensaje envenenado bloquea una ranura indefinidamente.

Agente y alojamiento

Broker de Redis: sencillo, a menudo en un VPS de Redis dedicado; Persistencia de AOF si los mensajes no desaparecen al reiniciar.

RabbitMQ: enrutamiento avanzado, más gastos operativos.

Los trabajadores de apio ejecutan procesos separados de Gunicorn, a menudo en el mismo VPS para un proyecto pequeño, en una segunda máquina si la carga aumenta. Pocos hosts administrados ofrecen Celery nativo: usted administra a los trabajadores en VPS o en la nube.

Para tareas programadas que alimentan a Celery, haga una referencia cruzada con cron confiable y Gunicorn nginx.

La cumbre: Apio sin tablero, es un cron mentiroso

Esto es lo que se esconde en la reunión “la tarea pasó por Apio”.

Criterios de fin de trabajo para una tarea de Apio: métrica de profundidad de la cola, alerta y procedimiento documentado para volver a poner en cola, no solo el decorador @shared_task.

Decide y avanza sin puntos ciegos

Durante un día, puedes hacer que Celery sea observable sin necesidad de revisar toda la arquitectura:

  1. Implemente Flower o un exportador de Prometheus en producción, no solo en el entorno de desarrollo donde nadie mira los archivos por la noche.
  2. Separe las colas por importancia y duración (correos electrónicos transaccionales, exportaciones intensas, mantenimiento nocturno) para que un trabajo prolongado no bloquee un envío urgente.
  3. Aplicar tiempos de respuesta y intentos máximos a todas las tareas existentes, incluidas las escritas hace dos años.
  4. Configure una alerta cuando la profundidad de la cola supere un umbral durante diez a quince minutos consecutivos.
  5. Pruebe detener abruptamente a un trabajador en medio de una tarea y verificar que el mensaje regrese a la cola.
  6. Documentar quién reinicia una cola bloqueada, dentro de qué plazo y con qué procedimiento de control después del reinicio.

Compare los VPS adecuados para los trabajadores a través del directorio y el comparador.

Preguntas frecuentes

¿Cómo sé si las tareas de Apio se están acumulando?

Supervise la longitud de la cola del agente con comandos apropiados (por ejemplo, LLEN en Redis o la interfaz de administración de RabbitMQ), el panel de Flower y las métricas de tareas reservadas o activas. Configure una alerta si la profundidad permanece alta durante más de quince minutos. El sitio puede responder 200 OK mientras miles de trabajos esperan sin que el equipo empresarial lo vea.

¿Qué hacer con las tareas fallidas repetidamente?

Configure una cola muerta, habilite task_acks_late con un número máximo de intentos y un retroceso progresivo, luego almacene las fallas en una base de datos inspeccionable como django-celery-results. Nunca reiniciar indefinidamente: un mensaje envenenado monopoliza a un trabajador. Corrija la causa raíz antes de cualquier reinicio masivo desde la interfaz de administración.

¿Redis o RabbitMQ como corredor?

Redis es adecuado para pymes y pequeños proyectos gracias a su facilidad de instalación. RabbitMQ asume el control cuando el enrutamiento es complejo, la persistencia de mensajes es crítica o varios consumidores comparten archivos con reglas detalladas. En ambos casos, supervise la memoria del servidor de intermediario y la persistencia de los mensajes entre reinicios.

¿Cuántos trabajadores del apio?

Dimensione los grupos dedicados por tipo de archivo, por ejemplo, "-Q correos electrónicos, exportaciones", en lugar de un solo grupo. Las exportaciones pesadas no deben compartir el mismo grupo que los correos electrónicos transaccionales; de lo contrario, un envío urgente podría esperar dos horas después de un proceso de PDF de diez minutos.


Celery transparente muestra la cola; el cuadro negro de Celery la llena mientras el sitio responde 200 OK.

Compara proveedores europeos

Filtra por cumplimiento, ubicación y caso de uso — luego abre las fichas para verificar el alcance real.

Explorar el directorio
Blog

Lecturas relacionadas

Todos los artículos →