Tareas periódicas con Celery
Clase 30 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 trabajar con tareas periódicas en Celery?
Aprender a programar tareas periódicas es una habilidad esencial para automatizar procesos que requieren una ejecución constante, como la recolección de datos o el mantenimiento del servidor. En este contenido, descubrirás cómo manejar tareas periódicas usando Celery, un potente gestor de tareas en Python que facilita programar y ejecutar trabajos en segundo plano.
¿Qué es Celery y cómo se usa?
Celery es una biblioteca de Python diseñada para gestionar las tareas de manera asíncrona y programada. Te permite definir tareas específicas y programar su ejecución en intervalos regulares, lo que es útil cuando necesitas procesos repetitivos sin intervención humana. Algunos aspectos clave de Celery incluyen:
- Gestión de tareas asíncronas: Permite ejecutar procesos largos en segundo plano, mejorando el rendimiento de las aplicaciones.
- Compatibilidad con diferentes brokers de mensaje: Puede ser usada con RabbitMQ, Redis, entre otros.
- Programación de tareas periódicas: Proporciona un módulo llamado
celery.beat, que permite configurar tareas para que se ejecuten automáticamente en un horario establecido.
¿Cómo configurar tareas periódicas en Celery?
Primero, debes importar las herramientas necesarias para trabajar con Celery. Aquí te mostramos cómo estructurar tu script para crear una tarea periódica:
from celery import Celery
from celery.schedules import crontab
app = Celery('nombre_aplicacion', broker='redis://localhost:6379/0')
# Configurar tarea periódica
app.conf.beat_schedule = {
'nombre_tarea': {
'task': 'nombre_modulo.tarea_especifica',
'schedule': crontab(minute=0, hour='*/1'), # Ejecutar cada hora
},
}
¿Cómo extraer datos regularmente con Python?
Supongamos que necesitas recolectar datos desde una página web en intervalos regulares. Puedes usar bibliotecas como beautifulsoup4 para analizar el HTML y extraer la información que necesitas. Esto se complementa con Celery para programar la descarga de datos periódicos.
import requests
from bs4 import BeautifulSoup
def descargar_datos():
url = "https://ejemplo.com/pagina-deseada"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# Extraer datos específicos de la página
datos_extraidos = soup.find_all('div', class_='clase-especifica')
with open('datos.json', 'w') as archivo:
archivo.write(str(datos_extraidos))
¿Cómo ejecutar una tarea periódica de Celery?
Para iniciar las tareas, debes ejecutar Celery con un worker y, si estás programando tareas periódicas, también necesitas arrancar el beat scheduler.
-
Iniciar el worker: Proceso que ejecuta las tareas programadas por Celery.
celery -A nombre_aplicacion worker --loglevel=info -
Iniciar el beat scheduler: Se encarga de enviar las tareas periódicas al worker.
celery -A nombre_aplicacion beat --loglevel=info
¿Consejos para trabajar con tareas periódicas en Celery?
- Comenzar simple: Configure una tarea básica para asegurarse de que los componentes de Celery están correctamente instalados y trabajan juntos.
- Registro y monitorización: Use los logs para entender qué está fallando en caso de errores, y monitorice las tareas para optimizar sus tiempos de ejecución.
- Escalabilidad: Diseñe las tareas de manera modular para facilitar la escalabilidad y personalización.
- Tareas atómicas: Haga que sus tareas sean pequeñas y realicen una sola función para reducir la complejidad y facilitar la depuración.
Celery es una herramienta poderosa que puede manejar múltiples tareas y programarlas eficientemente, ofreciendo una solución ideal para proyectos que requieran automatización y procesamiento en segundo plano. Con la práctica y un buen enfoque, podrás dominar el uso de tareas periódicas y mejorar la eficiencia de tus aplicaciones.