SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
Celery
Distributed Task Queue
Introducción a Celery y las colas de tareas
asíncronas
Alberto AlcoleaAlberto Alcolea
@albertoalcolea
http://albertoalcolea.com
Celery
Distributed Task Queue
Recursos disponibles online
Presentación:
http://www.slideshare.net/albertoalcolea/celery-3426
4576
Código fuente:
https://github.com/albertoalcolea/charla-celery
¿Qué es Celery?
¡Escalar!
Advanced Message Queuing Protocol
● Protocolo de capa de aplicaciones (OSI)
● Orientado a mensajes
● Encolamiento de mensajes: queuing
● Enrutamiento:
– Punto-a-punto
– Publicación-subscripción
Casos de uso
● Tareas con alto costo computacional
● I/O
● Tareas periodicas: cron
● Tareas lentas enviando los resultados con AJAX
¡Cualquier cosa fuera del ciclo
petición-respuesta!
Arquitectura
user AMQP
broker
celery
workers
backend
Arquitectura
user
Envía a la cola:
Tareas individuales
Conjuntos de tareas
Tareas encadenadas
Tareas periódicas
Tareas “reintentables”
Arquitectura
AMQP
broker
celery
workers
Workers escuchan (o se
subscriben) al bus AMQP en
busca de nuevas tareas
Arquitectura
AMQP
broker
celery
workers
Workers ejecutan tareas en
paralelo.
Prefork (multiprocessing)
Eventlet, gevent
Threads
Arquitectura
celery
workers
backend
Resultados escritos en
un backend
RDBMS
Redis
memcached
MongoDB
Arquitectura
celery
workers
backend
Resultados escritos en
un backend
¡O no!
Arquitectura
user backend
Lee los resultados
Brokers soportados (v3.1)
Nombre Estado Monitorización Control remoto
RabbitMQ Estable Sí Sí
Redis Estable Sí Sí
MongoDB Experimental Sí Sí
Beanstalk Experimental No No
Amazon SQS Experimental No No
CouchDB Experimental No No
Zookeeper Experimental No No
Django ORM Experimental No No
SQLAlchemy Experimental No No
IronMQ Plugin de terceros No No
Celery messaging at scale at Instagram
http://lc0.github.io/blog/2013/05/01/celery-messaging-
at-scale-at-instagram/
https://blogs.vmware.com/vfabric/2013/04/how-instag
ram-feeds-work-celery-and-rabbitmq.html
http://highscalability.com/blog/2012/4/9/the-instagram
-architecture-facebook-bought-for-a-cool-billio.html
Un poco de código
from celery import Celery
app = Celery('tasks', broker='amqp://')
@app.task
def add(x, y):
return x + y
Un poco de código
from celery import Celery
app = Celery('tasks', broker='redis://')
@app.task
def add(x, y):
return x + y
Un poco de código
from tasks import add
add.delay(4, 4)
Un poco de código
from celery import Celery
app = Celery('tasks', broker='amqp://', backend='redis://')
@app.task
def add(x, y):
return x + y
@app.task
def xsum(numbers):
return sum(numbers)
Un poco de código
from tasks import add
result = add.delay(4, 4)
results.ready() # True/False
results.get() # results.get(timeout=1)
result.traceback
Un poco de código
@app.task
def tarea_costosa(x, y):
try:
do_something()
except Exception, exc:
raise tarea_costosa.retry(exc=exc)
Si un nodo falla podemos reenviar la tarea a la cola.
Canvas
Signatures (subtasks)
Tareas llamadas dentro de otras tareas.
● Definir tareas parciales
● Callbacks
● Tareas inmutables
partial = add.s(2) # incomplete signature
partial.delay(4) # 2 + 4
add.apply_async((2, 2), link=add.s(8))
Primitivas
Group
Lista de tareas que deben ser aplicadas en paralelo.
Chain
Tareas que se ejecutan una detrás de otra (callbacks).
from celery import group
res = group(add.s(i, i) for i in xrange(10))()
res.get(timeout=1)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
from celery import chain
res = chain(add.s(2, 2), add.s(4), add.s(8))()
res.get() # 16
(add.s(2, 2) | add.s(4) | add.s(8))().get()
Primitivas
Chord
Group con callback. Se ejecuta cuando todas terminan
Chunks
Divide lista de argumentos y ejecuta en paralelo
from celery import chord
res = chord((add.s(i, i) for i in xrange(10)), xsum.s())()
res.get() # 90
from celery import chunks
res = add.chunks(zip(range(100), range(100)), 10)()
res.get()
Primitivas
Chunks + Chord/Chain = map-reduce
@app.task
def map(x, y):
return x + y
@app.task
def reduce(numlist):
numbers = [item for sub in numlist for item in sub]
return sum(numbers)
>>> chain(add.chunks(items, 5).group(), reduce.s())().get()
9900
>>> chord(add.chunks(items, 2).group(), reduce.s())().get()
9900
Canvas
¡Y más!
http://docs.celeryproject.org/en/latest/userguide/canvas.html
Celery
Distributed Task Queue
¡Gracias!
Alberto AlcoleaAlberto Alcolea
@albertoalcolea
http://albertoalcolea.com

Más contenido relacionado

La actualidad más candente

E-RETAIL SYSTEM_FINAL
E-RETAIL SYSTEM_FINALE-RETAIL SYSTEM_FINAL
E-RETAIL SYSTEM_FINALsurya singh
 
Blood Bank Management System.docx
Blood Bank Management System.docxBlood Bank Management System.docx
Blood Bank Management System.docxBlenKassahun1
 
project report V 2.0 By Amit Mangukiya
project report V 2.0 By Amit Mangukiyaproject report V 2.0 By Amit Mangukiya
project report V 2.0 By Amit MangukiyaAmit Mangukiya
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingHaim Michael
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web APIhabib_786
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming WebStackAcademy
 
The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)Venugopal Gummadala
 
Introduction to ajax
Introduction to ajaxIntroduction to ajax
Introduction to ajaxNir Elbaz
 
Reitit - Clojure/North 2019
Reitit - Clojure/North 2019Reitit - Clojure/North 2019
Reitit - Clojure/North 2019Metosin Oy
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptxIdrissaDembl
 
WEB Based claim processing sytem SRS
WEB Based claim processing sytem SRSWEB Based claim processing sytem SRS
WEB Based claim processing sytem SRSNitin Bhardwaj
 
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST Ram Awadh Prasad, PMP
 
Billing System
Billing SystemBilling System
Billing Systemdrake kjm
 
Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8Raja Rozali Raja Hasan
 
Java OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCJava OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCOUM SAOKOSAL
 

La actualidad más candente (20)

Php sessions & cookies
Php sessions & cookiesPhp sessions & cookies
Php sessions & cookies
 
E-RETAIL SYSTEM_FINAL
E-RETAIL SYSTEM_FINALE-RETAIL SYSTEM_FINAL
E-RETAIL SYSTEM_FINAL
 
Blood Bank Management System.docx
Blood Bank Management System.docxBlood Bank Management System.docx
Blood Bank Management System.docx
 
project report V 2.0 By Amit Mangukiya
project report V 2.0 By Amit Mangukiyaproject report V 2.0 By Amit Mangukiya
project report V 2.0 By Amit Mangukiya
 
Asynchronous JavaScript Programming
Asynchronous JavaScript ProgrammingAsynchronous JavaScript Programming
Asynchronous JavaScript Programming
 
ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming  Angular - Chapter 2 - TypeScript Programming
Angular - Chapter 2 - TypeScript Programming
 
The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)The secret life of a dispatcher (Adobe CQ AEM)
The secret life of a dispatcher (Adobe CQ AEM)
 
Introduction to ajax
Introduction to ajaxIntroduction to ajax
Introduction to ajax
 
Reitit - Clojure/North 2019
Reitit - Clojure/North 2019Reitit - Clojure/North 2019
Reitit - Clojure/North 2019
 
Yii2
Yii2Yii2
Yii2
 
Document(1)
Document(1)Document(1)
Document(1)
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
 
jQuery
jQueryjQuery
jQuery
 
WEB Based claim processing sytem SRS
WEB Based claim processing sytem SRSWEB Based claim processing sytem SRS
WEB Based claim processing sytem SRS
 
An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST An Overview of Web Services: SOAP and REST
An Overview of Web Services: SOAP and REST
 
Api testing
Api testingApi testing
Api testing
 
Billing System
Billing SystemBilling System
Billing System
 
Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8
 
Java OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBCJava OOP Programming language (Part 8) - Java Database JDBC
Java OOP Programming language (Part 8) - Java Database JDBC
 

Similar a Introducción a Celery y las colas de tareas asíncronas

Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twistedjjconti
 
Reactvolution
ReactvolutionReactvolution
Reactvolution_Lagash
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeSocialmetrix
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesMartín Volpe
 
News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel ComputingLluis Franco
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
 
No hagas ahora lo que puedes dejar para otro momento (Celery)
No hagas ahora lo que puedes dejar para otro momento (Celery)No hagas ahora lo que puedes dejar para otro momento (Celery)
No hagas ahora lo que puedes dejar para otro momento (Celery)⌨ Antonio Páez Gutiérrez
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Andrés Iturralde
 
solucionEjercicioPF.pdf
solucionEjercicioPF.pdfsolucionEjercicioPF.pdf
solucionEjercicioPF.pdfMisterioCR
 
Curso Swift
Curso SwiftCurso Swift
Curso SwiftPlatzi
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
Programación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosProgramación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosVíctor Bolinches
 

Similar a Introducción a Celery y las colas de tareas asíncronas (20)

Desarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con TwistedDesarrollando aplicaciones de red con Twisted
Desarrollando aplicaciones de red con Twisted
 
Reactvolution
ReactvolutionReactvolution
Reactvolution
 
Concurrencia en Java
Concurrencia en Java Concurrencia en Java
Concurrencia en Java
 
Tutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtimeTutorial en Apache Spark - Clasificando tweets en realtime
Tutorial en Apache Spark - Clasificando tweets en realtime
 
Fun[ctional] spark with scala
Fun[ctional] spark with scalaFun[ctional] spark with scala
Fun[ctional] spark with scala
 
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantesUsando Twisted para hacer aplicaciones de escritorio no bloqueantes
Usando Twisted para hacer aplicaciones de escritorio no bloqueantes
 
Meetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scalaMeetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scala
 
News40 Parallel Computing
News40 Parallel ComputingNews40 Parallel Computing
News40 Parallel Computing
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
No hagas ahora lo que puedes dejar para otro momento (Celery)
No hagas ahora lo que puedes dejar para otro momento (Celery)No hagas ahora lo que puedes dejar para otro momento (Celery)
No hagas ahora lo que puedes dejar para otro momento (Celery)
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
Construyendo las aplicaciones del futuro con visual studio 11 y .net framewor...
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
solucionEjercicioPF.pdf
solucionEjercicioPF.pdfsolucionEjercicioPF.pdf
solucionEjercicioPF.pdf
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
Programación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con AsincronismosProgramación Funcional y Orientada a Objetos con Asincronismos
Programación Funcional y Orientada a Objetos con Asincronismos
 
Java 8
Java 8Java 8
Java 8
 

Último

PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjNachisRamos
 
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehePSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdheheheheheheheheheErickRolandoPadillaC1
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadJonathanHctorSilvaRo
 
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...CENECOnline
 

Último (6)

PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjjPPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
PPT-HISTORIA-6°-ABC.pptxjjjjjjjjjjjjjjjjjjjjjj
 
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehePSICOPATOLOGIA I.pptxdhehehehehehehehehe
PSICOPATOLOGIA I.pptxdhehehehehehehehehe
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 
Corte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuadCorte de luz 2024 Guayaquil Guayas ecuad
Corte de luz 2024 Guayaquil Guayas ecuad
 
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
¡Descubre el Poder del Masaje Holístico en nuestra Primera Sesión del Seminar...
 

Introducción a Celery y las colas de tareas asíncronas