SlideShare una empresa de Scribd logo
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

La actualidad más candente

[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
Jo Hoon
 
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
裕之 木下
 
Mediator Design Pattern
Mediator Design PatternMediator Design Pattern
Mediator Design Pattern
Kuyseng Chhoeun
 
[2019] 점진적으로 프런트엔드 프레임워크 교체하기
[2019] 점진적으로 프런트엔드 프레임워크 교체하기[2019] 점진적으로 프런트엔드 프레임워크 교체하기
[2019] 점진적으로 프런트엔드 프레임워크 교체하기
NHN FORWARD
 
0515 dmc 영상스토리보드 + 진행상황
0515 dmc 영상스토리보드 + 진행상황0515 dmc 영상스토리보드 + 진행상황
0515 dmc 영상스토리보드 + 진행상황
나영 한
 
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
オラクルエンジニア通信
 
Communication diagram Introduction
Communication diagram IntroductionCommunication diagram Introduction
Communication diagram Introduction
Dineesha Suraweera
 
우아한 객체지향
우아한 객체지향우아한 객체지향
우아한 객체지향
Young-Ho Cho
 
Workbook answers
Workbook answersWorkbook answers
Workbook answers
qtntpam
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
Yurim Jin
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
QlikPresalesJapan
 
Git internals
Git internalsGit internals
Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptx
CAMILORUALES1
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩
JaeWoo Wie
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncKoji Shinkubo
 
Git Rebase vs Merge
Git Rebase vs MergeGit Rebase vs Merge
Git Rebase vs Merge
Mariam Hakobyan
 
Introduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORMIntroduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORM
Juan Ramón Laguardia
 
TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)
Jérôme Tamborini
 
Design patterns
Design patternsDesign patterns
Design patterns
Elyes Mejri
 
Qlik TechTalk What’s New May 2022リリースのご紹介
Qlik TechTalk What’s New May 2022リリースのご紹介Qlik TechTalk What’s New May 2022リリースのご紹介
Qlik TechTalk What’s New May 2022リリースのご紹介
QlikPresalesJapan
 

La actualidad más candente (20)

[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
 
第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」第15回JSSUG「Azure SQL Database 超入門」
第15回JSSUG「Azure SQL Database 超入門」
 
Mediator Design Pattern
Mediator Design PatternMediator Design Pattern
Mediator Design Pattern
 
[2019] 점진적으로 프런트엔드 프레임워크 교체하기
[2019] 점진적으로 프런트엔드 프레임워크 교체하기[2019] 점진적으로 프런트엔드 프레임워크 교체하기
[2019] 점진적으로 프런트엔드 프레임워크 교체하기
 
0515 dmc 영상스토리보드 + 진행상황
0515 dmc 영상스토리보드 + 진행상황0515 dmc 영상스토리보드 + 진행상황
0515 dmc 영상스토리보드 + 진행상황
 
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデートOracle Cloud Infrastructure:2022年1月度サービス・アップデート
Oracle Cloud Infrastructure:2022年1月度サービス・アップデート
 
Communication diagram Introduction
Communication diagram IntroductionCommunication diagram Introduction
Communication diagram Introduction
 
우아한 객체지향
우아한 객체지향우아한 객체지향
우아한 객체지향
 
Workbook answers
Workbook answersWorkbook answers
Workbook answers
 
초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub초보자를 위한 Git & GitHub
초보자를 위한 Git & GitHub
 
Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用Oracleのソース・ターゲットエンドポイントとしての利用
Oracleのソース・ターゲットエンドポイントとしての利用
 
Git internals
Git internalsGit internals
Git internals
 
Diagramas de clase.pptx
Diagramas de clase.pptxDiagramas de clase.pptx
Diagramas de clase.pptx
 
Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩Ipl자동화방안제안 애플트리랩
Ipl자동화방안제안 애플트리랩
 
Dbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_syncDbts2013 特濃jpoug log_file_sync
Dbts2013 特濃jpoug log_file_sync
 
Git Rebase vs Merge
Git Rebase vs MergeGit Rebase vs Merge
Git Rebase vs Merge
 
Introduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORMIntroduccion a Doctrine 2 ORM
Introduccion a Doctrine 2 ORM
 
TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)TP Git avancé DevoxxFR 2018 (exercices)
TP Git avancé DevoxxFR 2018 (exercices)
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Qlik TechTalk What’s New May 2022リリースのご紹介
Qlik TechTalk What’s New May 2022リリースのご紹介Qlik TechTalk What’s New May 2022リリースのご紹介
Qlik TechTalk What’s New May 2022リリースのご紹介
 

Similar a Computacion distribuida usando Celery para Python

Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012
Juan Lamamie-Clairac
 
RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactory
Jack 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 Rotas
Ricard 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 datos
Antonio 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-Corrientes
alexis ibarra
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
Erasmo Domínguez Jiménez
 
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
Ignacio 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 futuro
Fernando 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 Azure
Plain 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
 
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
Francisco Javier Barrena
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
psluaces
 
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
Daniel Primo
 
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
Juan Manuel Rodriguez Burgos
 
Sesion8_Python.pptx
Sesion8_Python.pptxSesion8_Python.pptx
Sesion8_Python.pptx
WilsonAlbertoRuizVel
 
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ótica
Software Guru
 
Construyendo rootkits basicos
Construyendo rootkits basicosConstruyendo rootkits basicos
Construyendo rootkits basicos
Tensor
 
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
Ichinose 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 bancario
David Gil Sánchez
 

Similar a Computacion distribuida usando Celery para Python (20)

Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012Liferay Spanish Symposium 2012
Liferay Spanish Symposium 2012
 
RAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactoryRAD Portlet Development using XMLPortletFactory
RAD Portlet Development using XMLPortletFactory
 
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

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
Sebastián Ramírez Montaño
 
Serving ML easily with FastAPI
Serving ML easily with FastAPIServing ML easily with FastAPI
Serving ML easily with FastAPI
Sebastián Ramírez Montaño
 
NoSQL for Artificial Intelligence
NoSQL for Artificial IntelligenceNoSQL for Artificial Intelligence
NoSQL for Artificial Intelligence
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 Data
Sebastiá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 Data
Sebastiá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