Tarefas demoradas de forma assíncrona com django e celery

5.903 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
5.903
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3.981
Ações
Compartilhamentos
0
Downloads
10
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

×