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

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

20/36
Recursos

¿Cómo conectar Slack con Celery para manejar tareas?

Conectar Slack con Celery para gestionar tareas puede parecer una misión formidable, ¡pero con los pasos correctos, se convierte en un viaje emocionante hacia la automatización! En este caso, vamos a integrar Slack para enviar datos que luego almacenaremos, permitiendo una interacción fluida y dinámica entre servicios. Prepárate para profundizar en el fascinante mundo de la tecnología mediante la implementación de un sistema eficiente de trabajo con Celery y Slack.

¿Qué implica usar Celery con Slack?

Celery es un administrador de tareas distribuidas que facilita la ejecución de tareas asíncronas en tu aplicación. Al combinarlo con Slack, podemos automatizar procesos de forma eficiente. En este proyecto, se desarrollan dos programas:

  1. Programa Frontend (en realidad un Backend): Recibe peticiones y las convierte en tareas de Celery que serán procesadas por trabajadores.
  2. Trabajador en Celery: Responsable de ejecutar tareas como almacenar eventos o comandos en una base de datos.

¿Cómo configurar el trabajador de Celery?

Para configurar Celery, primero definimos una aplicación y declaramos las tareas que se van a ejecutar. A través de un decorador @celery.task, se registra cada tarea específica de nuestra aplicación, permitiendo que éstas sean procesadas eficientemente.

from celery import Celery

app = Celery('tasks', broker='pyamqp://guest@localhost//')

@app.task
def register_event(event):
    # Lógica para manejar el evento
    print(event)  # Imprimir en logs
    # Almacenar en base de datos

¿Cómo funciona el cliente de Slack?

Este proyecto incorpora un cliente de Slack que actúa como intermediario. Configurado inicialmente como un bot, procesa comandos recibidos desde Slack y los envía a Celery para su gestión.

  1. Importación de Librerías: Iniciamos importando las librerías necesarias, asegurándonos de incluir tanto la librería de Slack como la de Celery.
  2. Procesamiento de Comandos: Configuramos un loop continuo que escucha eventos de Slack. Estos eventos se envían a Celery a través de la función register_event.
from slack_sdk import WebClient
import celery_app as celery

client = WebClient(token='YOUR_SLACK_TOKEN')

def process_events(events):
    for event in events:
        # Procesa y envía eventos a Celery
        celery.register_event.delay(event)

¿Cómo ejecutar los procesos y verificar su funcionamiento?

Después de preparar ambos programas, debes correr los procesos al mismo tiempo para garantizar que Celery y el cliente trabajen sincronizados.

  1. Iniciar Celery: Ejecuta el trabajo del trabajador de Celery.

    celery -A tasks worker --loglevel=info
    
  2. Iniciar el Cliente Slack: Ejecuta el archivo del cliente que conectará con Slack.

    python slack_client.py
    
  3. Verificación en Slack: Realiza interacciones desde tu canal de Slack, como enviar mensajes o comandos, para observar en tiempo real cómo estos son procesados por Celery y reflejados en los logs o base de datos.

Reflexiones finales sobre Celery y Slack

La integración de Slack con Celery potencia la capacidad de automatizar y gestionar tareas de manera más efectiva. La configuración de tareas asíncronas facilita el mantenimiento de sistemas escalables y reactivos. Este proyecto es tan solo el comienzo; se pueden implementar vehículos similares para otras aplicaciones y servicios. Sigue explorando y construyendo aplicaciones robustas con la magia de la automatización y la tecnología en su máxima expresión. ¡Adelante, el límite lo pones tú!

Aportes 8

Preguntas 1

Ordenar por:

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

Que horror !!! curso sin pies ni cabeza 🙄, toca aprender de la documentación http://www.celeryproject.org, espero mejoras en cursos posteriores =).

Prefiero los cursos de Leonidas. Este profesor lleva dándole vueltas a los mismos conceptos una y otra vez. Como se notan los vicios de la universidad a la hora de dar clases, un curso en linea NO debe ser igual a un curso presencial.

Bien difícil de seguir el curso…

Muy bueno el curso, los conceptos, quizas un poco más de orden, esta parte es fundamental, me ayudo mucho, pero a no quedarse solo con esta fuente, todo ayuda. Aca dejo un link con un ejemplo bastante simple. http://buhoprogramador.com/entrada/14/celery-django

El único curso que no me ha gustado de platzi, el profesor da muchas vueltas en un mismo tema, ha sido complicado seguir el curso

Por favor vuelvan a hacer este curso, realmente me gustaría aprender esto pero no tiene sentido el curso, es muy rebuscado, complejo y va de atrás a adelante constantemente.

entre a unas clases para reforzar alg de queues y veo comentarios de no pueden seguir si explica super bien :S

Para los que quieran ver un ejemplo en django (antes de pasarse al curso de django avanzado), les recomiendo que vean este enlace 😃

Ejemplo django-celery