SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Computación distribuida
usando Celery para Python:
Construye aplicaciones rápidas y escalables fácilmente
¿Quién les habla?
Sebastián Ramírez
CTO en: www.senseta.com
Github: github.com/tiangolo
Linkedin: linkedin.com/in/tiangolo
Twitter: twitter.com/tiangolo
Celery
@tiangolo
¿Quién lo usa?
...y muchos otros.
@tiangolo
¿Qué es Celery?
Celery is an asynchronous task queue/job queue based on distributed message
passing. It is focused on real-time operation, but supports scheduling as well.
Celery es una cola (o sistema para administrar colas) de tareas o trabajos de
manera asíncrona, basado en envío de mensajes. Está enfocado en operaciones
en tiempo-real, pero también soporta tareas programadas.
@tiangolo
WTF?
@tiangolo
¿Qué problemas resuelve?
● Aplicación web “lenta”
● Web que recibe datos y los procesa antes de almacenar
● Procesamiento adicional (extracción de entidades, Machine Learning...)
● Un servidor solo no alcanza a hacer todo lo que se necesita
● Coordinar múltiples dispositivos en red (e.g. coordinación de Raspberry Pi)
● Secuencias de pasos a ejecutar (e.g. procesar -> analizar -> almacenar)
@tiangolo
@tiangolo
¿Cómo resuelve problemas?
● Cada componente modularizado hace solo su parte
● Se pasan “tareas”, “trabajos” o “mensajes” entre módulos
● “Hey! Ejecuta esta función X con estos parámetros Y y Z!”
● Una aplicación principal ejecuta funciones de Celery que envían “tareas”
● “Workers” o “trabajadores” están “escuchando” tareas
● Cada “worker” va tomando tareas de una “cola” de tareas (lista de pendientes)
● Esa cola es RabbitMQ, Redis u otros
● Celery es el “pegante” que une todo, maneja la comunicación entre partes
@tiangolo
Arquitectura de Celery
@tiangolo
Arquitectura de Celery 2
@tiangolo
Desvío, atajo: ¿qué es Docker?
● Máquinas virtuales, solo que no
● Virtualenv, solo que no
● “Containers” mini-Linux sobre Linux
● Seguridad
● Dependencias
● “Pero en mi laptop funciona”
● “Imágenes” pre-existentes
● Aprendizaje de otros sistemas
● Empezar de cero más rápido
● ...etc
@tiangolo
@tiangolo
Arquitectura de Celery, con Docker
@tiangolo
Arquitectura de Celery, con Docker, multi máquina
@tiangolo
Arquitectura de Celery, con Docker, multi-workers
@tiangolo
“Workers” o trabajadores en diferentes servidores
@tiangolo
@tiangolo
Código celery_app.py
@tiangolo
Código main.py
@tiangolo
Código Worker: tasks.py
$ celery worker -A tasks -l info
@tiangolo
“Queues” o “colas” especializadas por tipo de worker
@tiangolo
@tiangolo
“Colas” especializadas celery_app.py
@tiangolo
“Colas” especializadas
Worker A (requests): tasks.py
$ celery worker -A tasks -l info -Q queue-a
@tiangolo
“Colas” especializadas
Worker B (markdown): tasks.py
$ celery worker -A tasks -l info -Q queue-b
@tiangolo
“Colas” especializadas main.py
@tiangolo
“Chains” o “cadenas” de tareas
@tiangolo
@tiangolo
“Cadenas” de tareas celery_app.py
@tiangolo
“Cadenas” de tareas Worker A (requests): tasks.py
$ celery worker -A tasks -l info -Q queue-a
@tiangolo
“Cadenas” de tareas Worker B (markdown): tasks.py
$ celery worker -A tasks -l info -Q queue-b
@tiangolo
“Cadenas” de tareas main.py
@tiangolo
“Cadenas” de tareas main.py (con formato)
@tiangolo
Sub tareas generadas en workers (sin “cadenas”)
@tiangolo
@tiangolo
Se puede tener un back end de resultados
@tiangolo
Escribir en DB y responder luego
@tiangolo
Llamar API externo lento
@tiangolo
¿Preguntas?
@tiangolo
¡Gracias!
Sebastián Ramírez
CTO en: www.senseta.com
Github: github.com/tiangolo
Linkedin: linkedin.com/in/tiangolo
Twitter: twitter.com/tiangolo

Más contenido relacionado

Similar a Computacion distribuida usando Celery para Python

RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryJack A. Rider
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasRicard Clau
 
Empleos con futuro. Perfil de un ingeniero de datos
Empleos con futuro. Perfil de un ingeniero de datosEmpleos con futuro. Perfil de un ingeniero de datos
Empleos con futuro. Perfil de un ingeniero de datosAntonio Santos Ramos
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tardeIgnacio Segura
 
Tecnologías de hoy y del futuro
Tecnologías de hoy y del futuroTecnologías de hoy y del futuro
Tecnologías de hoy y del futuroFernando Parra
 
DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzureDotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzurePlain Concepts
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Ricardo Guerrero Gómez-Olmedo
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simplepsluaces
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPDaniel Primo
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Socialmetrix
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robóticaSoftware Guru
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicosTensor
 
Mapa mental gilberto ramos itdo acosta_erik solis
Mapa mental gilberto ramos itdo acosta_erik solisMapa mental gilberto ramos itdo acosta_erik solis
Mapa mental gilberto ramos itdo acosta_erik solisIchinose 11
 
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioBancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioDavid Gil Sánchez
 

Similar a Computacion distribuida usando Celery para Python (20)

RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactory
 
Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012
 
DevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas RotasDevOps & Infraestructura como código: Promesas Rotas
DevOps & Infraestructura como código: Promesas Rotas
 
Empleos con futuro. Perfil de un ingeniero de datos
Empleos con futuro. Perfil de un ingeniero de datosEmpleos con futuro. Perfil de un ingeniero de datos
Empleos con futuro. Perfil de un ingeniero de datos
 
Python y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-CorrientesPython y la POO, en una clase, UNNe-Corrientes
Python y la POO, en una clase, UNNe-Corrientes
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tarde
 
Tecnologías de hoy y del futuro
Tecnologías de hoy y del futuroTecnologías de hoy y del futuro
Tecnologías de hoy y del futuro
 
DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en AzureDotNet 2019 | Alberto Varela - Infraestructura como código en Azure
DotNet 2019 | Alberto Varela - Infraestructura como código en Azure
 
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
Spain AI 2022 - ¡Oh, un modelo de ML, vamos a desplegarlo! - Machine Learning...
 
Semana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUMSemana de la I+D - Proyecto OPOSSUM
Semana de la I+D - Proyecto OPOSSUM
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
 
Gestión Remota de Equipos con Python
Gestión Remota de Equipos con PythonGestión Remota de Equipos con Python
Gestión Remota de Equipos con Python
 
Sesion8_Python.pptx
Sesion8_Python.pptxSesion8_Python.pptx
Sesion8_Python.pptx
 
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
Construyendo una Infraestructura de Big Data rentable y escalable (la evoluci...
 
Re evolución robótica
Re evolución robóticaRe evolución robótica
Re evolución robótica
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
 
Mapa mental gilberto ramos itdo acosta_erik solis
Mapa mental gilberto ramos itdo acosta_erik solisMapa mental gilberto ramos itdo acosta_erik solis
Mapa mental gilberto ramos itdo acosta_erik solis
 
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancarioBancaCivica.es: Un caso de éxito Drupal en el sector bancario
BancaCivica.es: Un caso de éxito Drupal en el sector bancario
 

Más de Sebastián Ramírez Montaño

De noob a experto en Big Data con cursos online (MOOCs)
De noob a experto en Big Data con cursos online (MOOCs)De noob a experto en Big Data con cursos online (MOOCs)
De noob a experto en Big Data con cursos online (MOOCs)Sebastián Ramírez Montaño
 
Familiarización básica a métodos y herramientas para soluciones de Big Data
Familiarización básica a métodos y herramientas para soluciones de Big DataFamiliarización básica a métodos y herramientas para soluciones de Big Data
Familiarización básica a métodos y herramientas para soluciones de Big DataSebastián Ramírez Montaño
 
Estudios de caso e historias de éxito del uso efectivo de Big Data
Estudios de caso e historias de éxito del uso efectivo de Big DataEstudios de caso e historias de éxito del uso efectivo de Big Data
Estudios de caso e historias de éxito del uso efectivo de Big DataSebastián Ramírez Montaño
 
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...Introducción básica a Big Data e inventario de herramientas efectivas para Bi...
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...Sebastián Ramírez Montaño
 

Más de Sebastián Ramírez Montaño (7)

Serving ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme versionServing ML easily with FastAPI - meme version
Serving ML easily with FastAPI - meme version
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
 
NoSQL for Artificial Intelligence
NoSQL for Artificial IntelligenceNoSQL for Artificial Intelligence
NoSQL for Artificial Intelligence
 
De noob a experto en Big Data con cursos online (MOOCs)
De noob a experto en Big Data con cursos online (MOOCs)De noob a experto en Big Data con cursos online (MOOCs)
De noob a experto en Big Data con cursos online (MOOCs)
 
Familiarización básica a métodos y herramientas para soluciones de Big Data
Familiarización básica a métodos y herramientas para soluciones de Big DataFamiliarización básica a métodos y herramientas para soluciones de Big Data
Familiarización básica a métodos y herramientas para soluciones de Big Data
 
Estudios de caso e historias de éxito del uso efectivo de Big Data
Estudios de caso e historias de éxito del uso efectivo de Big DataEstudios de caso e historias de éxito del uso efectivo de Big Data
Estudios de caso e historias de éxito del uso efectivo de Big Data
 
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...Introducción básica a Big Data e inventario de herramientas efectivas para Bi...
Introducción básica a Big Data e inventario de herramientas efectivas para Bi...
 

Computacion distribuida usando Celery para Python