Bienvenida

1

Celery ¿Qué es, para qué sirve, cómo se usa?

2

Repositorio del proyecto

3

Arquitecturas de software basadas en mensajería y colas de tareas

4

Brokers de tareas: Servidores de mensajería y formas de usarlos

5

¿Cuándo debemos usar Celery?

6

Reto: Casos de uso de Celery

Bot de Slack

7

¿Cómo funciona un bot?

8

Cómo funciona el API de Slack para programación de bots (y parecidos y diferencias con otros APIs)

9

¿Cómo crear un bot reactivo?

10

Reto: posibles aplicaciones de bots de Slack, buscar ejemplos y entender cómo se llevarían a cabo

11

Reto: modificar el bot básico y crear alguno que responda a a algún tipo de petición o muestre algo

Brokers de mensajería

12

¿Qué es un broker de mensajería y cuándo debe usarse?

13

Conceptos: mecanismos de publicación/suscripción. Canales. Intercambiadores

14

Brokers de mensajería open source

15

Python con RabbitMQ uso básico de la terminal

16

Comparación de diferentes brokers de mensajería para trabajar con Celery

17

Reto: Crear una pequeña aplicación cliente-servidor que use RabbitMQ desde Python

Celery y brokers de mensajería

18

Creando un entorno de desarrollo para Celery

19

Instalación y creación de un programa básico pub/sub

20

Cómo usar Celery para programar un robot de Slack: diseño y comienzo de la implementación

21

Monitorización de tareas

22

Solucionando problemas

23

Reto: implementación y despliegue básico de un bot de Slack

Enrutado de tareas

24

Conceptos: enrutado de tareas y por qué se necesita

25

Enrutado manual

26

Mensajería en Celery: uso de Kombu

27

Enrutado automático

28

Reto: diseño de mecanismos de enrutado para un bot de Slack

Integración y despliegue en la nube

29

Estructura de mensajes en Celery y resultados de tareas

30

Tareas periódicas con Celery

31

Configuración de sistemas en la nube

32

Contenedores

33

Despliegue en un PaaS: Heroku

34

Uso de Celery con Node.js

35

Reto: despliegue en la nube (usando cuentas gratuitas)

Conclusiones

36

Despedida, conclusiones y a dónde ir desde aquí

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Celery 4

Curso de Celery 4

Juan Julián Merelo

Juan Julián Merelo

Mensajería en Celery: uso de Kombu

26/36
Recursos

¿Cómo configurar Kombu como herramienta de imputado en Celery?

Entender cómo trabajar con rutas y colas de manera eficiente es fundamental para la optimización y funcionalidad de tus aplicaciones distribuidas. En este artículo, exploraremos cómo Kombu puede ser usado junto con Celery para lograrlo. Kombu ofrece una flexibilidad extraordinaria al permitirte trabajar con diferentes sistemas de mensajería de forma uniforme, lo que te posibilita personalizar y optimizar tus rutas y colas sin complicaciones.

¿Qué es Kombu y por qué usarlo con Celery?

Kombu es una biblioteca de mensajería que se utiliza en conjunto con Celery para manejar las colas de tareas. Es fundamental porque permite una interacción suave con diferentes sistemas de mensajería, sumado a que abstrae la complejidad de trabajar con diferentes protocolos como AMQP.

  • Flexibilidad: Kombu es compatible con muchos backends de mensajería, incluyendo RabbitMQ y Redis.
  • Uniformidad: Permite a Celery utilizar un único conjunto de instrucciones sin importar el sistema de mensajería subyacente.
  • Optimización de colas: Puedes modificar el comportamiento de colas en ejecución, beneficiando el rendimiento global.

¿Cómo implementar Kombu en un cliente de Celery?

Primero, asegúrate de importar los objetos correctos y transferir la complejidad de la definición de colas y rutas al cliente.

from celery import Celery
from kombu import Exchange, Queue

app = Celery('nombre_cliente')

app.conf.task_queues = (
    Queue('ruta_uno', Exchange('default'), routing_key='default'),
)

app.conf.task_routes = {
    'app.tasks.*': {'queue': 'ruta_uno'},
}
  1. Definir la aplicación Celery: Utiliza Celery como un objeto maestro que manejará tus tareas y rutas.
  2. Declarar colas y rutas: Mediante Kombu, define colas personalizadas. Es crucial que las rutas de tareas estén correctamente configuradas para que las tareas lleguen siempre a su destino adecuado.

¿Cómo administrar prioridades y tipos de colas?

Kombu y Celery permiten especificar características avanzadas en colas para priorizar ciertas tareas:

from kombu import Queue, Exchange

app.conf.task_queues = (
    Queue('ruta_prioridad', Exchange('default'),
          routing_key='prioridad', 
          queue_arguments={'x-max-priority': 10}),
)

app.conf.task_routes = {
    'app.tasks.high_pri_task': {'queue': 'ruta_prioridad'},
}
  • Prioridades en colas: Utilizando RabbitMQ, por ejemplo, puedes definir colas con prioridades para que ciertas tareas sean procesadas antes que otras.
  • Colas dedicadas para eventos específicos: Puedes configurar colas que gestionen eventos de manera exclusiva, optimizando así el rendimiento general.

¿Cómo asegurar la integridad y el manejo de errores?

Uno de los aspectos más críticos cuando se trabaja con mensajería es asegurar que las tareas sean enviadas correctamente y manejar los errores efectivamente:

  • Verificar rutas y comandos: Implementar lógica de verificación para asegurar que los mensajes se envíen al destinatario correcto.
  • Manejo de errores: Configurar excepciones personalizadas para capturar y gestionar posibles errores en el procesamiento de tareas sin comprometer el sistema completo.
try:
    app.send_task('app.tasks.procesar_datos', args=[data])
except Exception as e:
    handle_error(e)

¿Qué beneficios ofrece la implementación en el cliente?

La implementación de esta estructura en el cliente brinda múltiples ventajas:

  • Eficiencia: Las tareas se procesan con mayor rapidez y en su destino correcto.
  • Seguridad: El sistema es más robusto y menos susceptible a errores.
  • Concurrencia y administración de tareas: El manejo de múltiples rutas y colas permite una mejor distribución y uso de los recursos.

Implementa estas estrategias para optimizar tu entorno de trabajo con Celery y Kombu, asegurando máxima eficacia y estabilidad en el procesamiento de tareas. Recuerda experimentar y ajustar las configuraciones según las necesidades específicas de tu aplicación. ¡Continúa aprendiendo y desarrollando tus habilidades en el manejo de sistemas distribuidos!

Aportes 1

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Buen video, no había terminado de entender como comunicarme desde Celery hacia rabbitmq con lo que leí en la doc pero con este video la idea me queda algo más clara.