Instalación y creación de un programa básico pub/sub
Clase 19 de 36 • Curso de Celery 4
Contenido del curso
- 7

¿Cómo funciona un bot?
10:49 - 8

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

¿Cómo crear un bot reactivo?
15:54 - 10

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

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

¿Qué es un broker de mensajería y cuándo debe usarse?
04:44 - 13
Conceptos: mecanismos de publicación/suscripción. Canales. Intercambiadores
02:27 - 14

Brokers de mensajería open source
06:03 - 15

Python con RabbitMQ uso básico de la terminal
14:12 - 16

Comparación de diferentes brokers de mensajería para trabajar con Celery
06:07 - 17

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

Creando un entorno de desarrollo para Celery
08:12 - 19

Instalación y creación de un programa básico pub/sub
15:13 - 20

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

Monitorización de tareas
15:33 - 22

Solucionando problemas
09:51 - 23

Reto: implementación y despliegue básico de un bot de Slack
04:19
¿Cómo comenzar con Celery y RabbitMQ en Python?
Comenzar un proyecto con Celery y RabbitMQ puede parecer complicado al principio, pero con las configuraciones adecuadas, se puede lograr una integración eficiente y segura. A lo largo de esta guía, te llevaré paso a paso por el proceso de configuración y creación de tareas con Celery y RabbitMQ, utilizando Python como lenguaje principal. También exploraremos cómo manejar eventos desde Slack y almacenarlos eficientemente.
¿Qué herramientas instalar y configurar?
Para empezar, asegúrate de haber instalado todas las herramientas necesarias. Esto incluye:
- Python: el lenguaje principal para escribir nuestro código.
- Celery: una librería para manejar la cola de tareas.
- RabbitMQ: un broker de mensajes que trabajará junto con Celery para procesar las tareas.
- SQLAlchemy: se recomienda para manejar bases de datos, en este caso, utilizaremos SQLite para el registro de logs.
¿Cómo se configura el entorno de desarrollo?
Es esencial preparar el entorno de desarrollo para evitar problemas durante la ejecución del programa. Aquí te dejo un conjunto de pasos básicos para configurar tu entorno:
-
Variables de entorno: Se utilizan archivos .env para manejar de forma segura las configuraciones sensibles como claves y contraseñas.
-
Archivos de configuración:
from celery import Celery from datetime import datetime import sqlite3 app = Celery('tasks', broker='amqp://guest@localhost//') -
Base de datos SQLite: Aunque no se recomienda para producción, su simplicidad lo hace ideal para desarrollos iniciales o entornos controlados.
¿Cómo registrar y manejar eventos de Slack?
El objetivo de la aplicación es capturar y registrar eventos desde Slack. Para gestionar esto, el enfoque es:
- Registrar cada evento o comando que proviene de Slack en la base de datos. Esto implica crear una tabla simple con el nombre del comando y la cantidad de veces que se invoca.
¿Cómo crear tareas con Celery?
La creación de tareas con Celery se efectúa a través de decoradores, que permiten definir funciones que ejecutarán tareas asíncronas.
from flask import Flask, request, jsonify
import json
@app.task
def registrar_comando(comando):
# Conexión a la base de datos
conn = sqlite3.connect('comandos.db')
cursor = conn.cursor()
# Lógica para registrar el comando
cursor.execute("SELECT * FROM registros WHERE comando=?", (comando,))
registro = cursor.fetchone()
if registro:
cursor.execute("UPDATE registros SET contador = contador + 1 WHERE comando=?", (comando,))
else:
cursor.execute("INSERT INTO registros (comando, contador) VALUES (?, 1)", (comando,))
conn.commit()
conn.close()
¿Qué precauciones tomar al manejar credenciales?
Al trabajar con RabbitMQ y Celery, se debe asegurar la protección de información sensible como contraseñas y nombres de usuario. Usa archivos de configuración .env y evita hardcodear valores directamente en el código.
¿Cómo ejecutar y probar la aplicación?
Finalmente, arrancar la aplicación es sencillo con Celery. Utiliza comandos de Celery para iniciar trabajadores y procesa los eventos que llegan:
celery -A tasks worker --loglevel=info
Esto levantará un worker que estará listo para recibir tareas.
¿Qué beneficios trae el uso de Celery y RabbitMQ?
La principal ventaja de utilizar Celery junto con RabbitMQ es la capacidad de desacoplar procesos largos o asíncronos del flujo principal de un programa. Esto permite mejorar la virtualización de cargas de trabajo pesadas y optimiza el rendimiento y la eficiencia de una aplicación.
Anímate a seguir explorando en esta línea de desarrollo, ya que Celery y RabbitMQ son herramientas poderosas en el manejo de tareas distribuidas y asíncronas que pueden elevar tus proyectos al siguiente nivel.