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
Próximos SlideShares
Carregando em…5
×

Tarefas demoradas de forma assíncrona com django e celery

6.514 visualizações

Publicada em

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.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
6.514
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4.301
Ações
Compartilhamentos
0
Downloads
11
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

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

×