Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Tarefas demoradas de
forma assíncrona com
Django e Celery
@ffreitasalves
Intro (O Problema)
1. Rápido >>> Lento
2. Tarefas demoradas -> Timeout
3. Dependência de fatores externos (API de
terceiro...
Exemplos de problemas
1. Gerar um relatório/documento demorado
2. Enviar muitos emails
3. Editar um vídeo online
Caso Real
Nããããããããããããão
Apresentando o Celery
1. Task Queue Assíncrona
2. Agenda tarefas
3. Integração com Django, flask, tornado, etc.
Mão na Massa
Instalar o RabbitMQ
1. Instalar do site ou com APT-GET
a. sudo rabbitmqctl add_user myuser mypassword
b. sudo...
Instalar e configurar o Celery
pip install celery
settings.py:
Instalar e configurar o Celery
na pasta do projeto
__init__.py:
Instalar e configurar o Celery
na pasta do projeto
celery.py:
Criando a task assíncrona
Na pasta do APP
tasks.py
Agora é só chamar a Task
views.py
Rodar o Celery
celery --app=nomeprj worker --loglevel=INFO
Se quiser, só chamar a função
Em produção, use o supervisor
1. sudo apt-get install supervisor
2. criar um arquivo de configuração pro celery e com um l...
Reiniciar o supervisor
1. supervisorctl reread
2. supervisorctl update
3. supervisorctl start celery
Obrigado!
Fernando Freitas Alves (@ffreitasalves)
ffreitasalves@gmail.com
http://fernandofreitasalves.com
Tarefas demoradas de forma assíncrona com django e celery
Upcoming SlideShare
Loading in …5
×

Tarefas demoradas de forma assíncrona com django e celery

18,565 views

Published on

Quero mostrar como usar o Celery de forma fácil junto com o RabbitMQ para executar tarefas demoradas num sistema web, como por exemplo gerar um relatório ou esperar a resposta de uma API externa ao seu sistema. E como colocar isso em produção utilizando o supervisor.

Published in: Technology
  • Be the first to comment

Tarefas demoradas de forma assíncrona com django e celery

  1. 1. Tarefas demoradas de forma assíncrona com Django e Celery @ffreitasalves
  2. 2. Intro (O Problema) 1. Rápido >>> Lento 2. Tarefas demoradas -> Timeout 3. Dependência de fatores externos (API de terceiros, resposta do SO, etc)
  3. 3. Exemplos de problemas 1. Gerar um relatório/documento demorado 2. Enviar muitos emails 3. Editar um vídeo online
  4. 4. Caso Real
  5. 5. Nããããããããããããão
  6. 6. Apresentando o Celery 1. Task Queue Assíncrona 2. Agenda tarefas 3. Integração com Django, flask, tornado, etc.
  7. 7. Mão na Massa Instalar o RabbitMQ 1. Instalar do site ou com APT-GET a. sudo rabbitmqctl add_user myuser mypassword b. sudo rabbitmqctl add_vhost myvhost c. sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
  8. 8. Instalar e configurar o Celery pip install celery settings.py:
  9. 9. Instalar e configurar o Celery na pasta do projeto __init__.py:
  10. 10. Instalar e configurar o Celery na pasta do projeto celery.py:
  11. 11. Criando a task assíncrona Na pasta do APP tasks.py
  12. 12. Agora é só chamar a Task views.py
  13. 13. Rodar o Celery celery --app=nomeprj worker --loglevel=INFO
  14. 14. Se quiser, só chamar a função
  15. 15. Em produção, use o supervisor 1. sudo apt-get install supervisor 2. criar um arquivo de configuração pro celery e com um link simbólico no /etc/supervisor/conf.d/ [program:celery] command=/home/deploy/.virtualenvs/virtual_legal/bin/celery --app=nomeprj worker --loglevel=INFO directory=/home/deploy/webapps/pasta_projeto user=nobody autostart=true autorestart=true redirect_stderr=true
  16. 16. Reiniciar o supervisor 1. supervisorctl reread 2. supervisorctl update 3. supervisorctl start celery
  17. 17. Obrigado! Fernando Freitas Alves (@ffreitasalves) ffreitasalves@gmail.com http://fernandofreitasalves.com

×