SlideShare una empresa de Scribd logo
1 de 19
TAREFAS ASSÍNCRONAS COM
DJANGO E CELERY
Allisson Azevedo
Monday, June 10, 13
ALLISSON AZEVEDO
Graduado em Licenciatura em Computação
Desenvolvedor Web
http://speakerdeck.com/allisson
http://slideshare.net/allisson
http://github.com/allisson
http://youtube.com/user/allissonazevedo
Monday, June 10, 13
Monday, June 10, 13
Monday, June 10, 13
PORQUE EU PRECISO DE UM
TASK/JOB QUEUE?
Necessidade de processar uma tarefa fora do ciclo de
requisição e reposta
Processamento de vídeo/imagens
Envio de e-mails
Geração de relatórios complexos
Comunicação com API’s externas (twitter, facebook)
Monday, June 10, 13
PORQUE EU PRECISO DE UM
TASK/JOB QUEUE?
Agendar tarefas (substituir o cron)
Trabalhar com indexação de um search engine
Monday, June 10, 13
COMO FUNCIONA?
Client
Quem gera a tarefa
Message Broker
Gerencia a fila de tarefas
Worker
Recebe as tarefas do Broker e executa as mesmas
Monday, June 10, 13
COMO FUNCIONA?
Result Store
Onde são guardados os resultados das tarefas
Monday, June 10, 13
CELERY
“Distributed Task Queue”
Escrito em python
Integração com os principais frameworks python
(django, pyramid, flask, web2py, tornado)
Broker Backends (rabbitmq, redis, sqlalchemy, django,
mongodb)
Result Store Backends (Redis, memcached, MongoDB)
Monday, June 10, 13
QUAL BROKER USAR?
RabbitMQ (http://stackoverflow.com/a/9176046)
Redis
Não use o broker como result store
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
pip install django-celery
Adicione o djcelery no INSTALLED_APPS
Adicione as linhas no settings.py
import djcelery
djcelery.setup_loader()
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
Selecione o broker
BROKER_URL = 'redis://localhost:6379/0' #Redis
Inicie o worker
python manage.py celery worker --loglevel=info
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
Em seus projetos, crie um arquivo chamado tasks.py
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
from celery import task
@task()
def add(x, y):
return x + y
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
Rode a task
Monday, June 10, 13
INTEGRANDO COM O
DJANGO
>>> from celerytest.tasks import add
>>> add.delay(2, 2)
>>> add.apply_async((2, 2))
Monday, June 10, 13
MÃO NA MASSA!
https://github.com/allisson/django-social-monitor-
example
Monday, June 10, 13
Monday, June 10, 13
OBRIGADO!
Monday, June 10, 13

Más contenido relacionado

La actualidad más candente

Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04
Ramon Kayo
 

La actualidad más candente (20)

Lógica de Programação - Algoritmos
Lógica de Programação - AlgoritmosLógica de Programação - Algoritmos
Lógica de Programação - Algoritmos
 
aula 04 - Logica de programacao
aula 04 - Logica de programacaoaula 04 - Logica de programacao
aula 04 - Logica de programacao
 
Value objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progressValue objects in JS - an ES7 work in progress
Value objects in JS - an ES7 work in progress
 
Design Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The WorldDesign Patterns For 70% Of Programmers In The World
Design Patterns For 70% Of Programmers In The World
 
코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리
코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리
코딩테스트 합격자 되기 2주차 스터디 - 리스트_딕셔너리
 
Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5Minicurso de HTML básico - Atualizado para HTML5
Minicurso de HTML básico - Atualizado para HTML5
 
Facenet - Paper Review
Facenet - Paper ReviewFacenet - Paper Review
Facenet - Paper Review
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
코드 리뷰의 또 다른 접근 방법: Pull Requests vs. Stacked Changes
 
HTML仕様書を読んでみよう
HTML仕様書を読んでみようHTML仕様書を読んでみよう
HTML仕様書を読んでみよう
 
사람들과 자연스러운 대화를 나누는 일상대화 인공지능 만들기
사람들과 자연스러운 대화를 나누는 일상대화 인공지능 만들기사람들과 자연스러운 대화를 나누는 일상대화 인공지능 만들기
사람들과 자연스러운 대화를 나누는 일상대화 인공지능 만들기
 
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação Dinâmica
 
DSLの使い所
DSLの使い所DSLの使い所
DSLの使い所
 
Task and Time monitoring with Backlog and Toggl
Task and Time monitoring with Backlog and TogglTask and Time monitoring with Backlog and Toggl
Task and Time monitoring with Backlog and Toggl
 
Seminário de Python - LP 1/2015 - Grupo 2
Seminário de Python - LP 1/2015 - Grupo 2Seminário de Python - LP 1/2015 - Grupo 2
Seminário de Python - LP 1/2015 - Grupo 2
 
Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04Lógica de Programação com Javascript - Aula #04
Lógica de Programação com Javascript - Aula #04
 
Gpt models
Gpt modelsGpt models
Gpt models
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
 
Circuitos Digitais: Paridade parte 1
Circuitos Digitais: Paridade parte 1Circuitos Digitais: Paridade parte 1
Circuitos Digitais: Paridade parte 1
 

Destacado

Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redis
Allisson Azevedo
 

Destacado (11)

Deploy completo de uma aplicação Django
Deploy completo de uma aplicação DjangoDeploy completo de uma aplicação Django
Deploy completo de uma aplicação Django
 
Consumindo API's OAuth{1,2} com Python
Consumindo API's OAuth{1,2} com PythonConsumindo API's OAuth{1,2} com Python
Consumindo API's OAuth{1,2} com Python
 
Docker + Django
Docker + DjangoDocker + Django
Docker + Django
 
Introdução a linguagem Go
Introdução a linguagem GoIntrodução a linguagem Go
Introdução a linguagem Go
 
Otimizando sites com o nosql redis
Otimizando sites com o nosql redisOtimizando sites com o nosql redis
Otimizando sites com o nosql redis
 
Iteraveis e geradores
Iteraveis e geradoresIteraveis e geradores
Iteraveis e geradores
 
Python Nordeste 2016
Python Nordeste 2016Python Nordeste 2016
Python Nordeste 2016
 
Django class based views for beginners
Django class based views for beginnersDjango class based views for beginners
Django class based views for beginners
 
Customizando Admin do Django
Customizando Admin do DjangoCustomizando Admin do Django
Customizando Admin do Django
 
Wiki-wiki S/A
Wiki-wiki S/AWiki-wiki S/A
Wiki-wiki S/A
 
Lógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendaçãoLógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendação
 

Más de Allisson Azevedo (11)

Programação Assíncrona com Asyncio
Programação Assíncrona com AsyncioProgramação Assíncrona com Asyncio
Programação Assíncrona com Asyncio
 
Construindo um micro framework web em Python
Construindo um micro framework web em PythonConstruindo um micro framework web em Python
Construindo um micro framework web em Python
 
Desenvolvimento Web com Django
Desenvolvimento Web com DjangoDesenvolvimento Web com Django
Desenvolvimento Web com Django
 
Ecossistema Python Para Web
Ecossistema Python Para WebEcossistema Python Para Web
Ecossistema Python Para Web
 
Palestra iv-ensol-nosql
Palestra iv-ensol-nosqlPalestra iv-ensol-nosql
Palestra iv-ensol-nosql
 
Empacotamento Rpm Na Pratica
Empacotamento Rpm Na PraticaEmpacotamento Rpm Na Pratica
Empacotamento Rpm Na Pratica
 
Criando Pacotes Rpm Para O Fedora
Criando Pacotes Rpm Para O FedoraCriando Pacotes Rpm Para O Fedora
Criando Pacotes Rpm Para O Fedora
 
Palestra CouchDB III ENSOL
Palestra CouchDB III ENSOLPalestra CouchDB III ENSOL
Palestra CouchDB III ENSOL
 
Ruby on Rails Enecomp 2008
Ruby on Rails Enecomp 2008Ruby on Rails Enecomp 2008
Ruby on Rails Enecomp 2008
 
Desenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto FedoraDesenvolvendo uma distribuição Linux - Projeto Fedora
Desenvolvendo uma distribuição Linux - Projeto Fedora
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Tarefas Assíncronas com Django e Celery