tarefas demoradas de forma assíncrona com django e celery
TRANSCRIPT
![Page 1: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/1.jpg)
Tarefas demoradas de forma assíncrona com
Django e Celery
@ffreitasalves
![Page 2: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/2.jpg)
Intro (O Problema)
1. Rápido >>> Lento
2. Tarefas demoradas -> Timeout
3. Dependência de fatores externos (API de terceiros, resposta do SO, etc)
![Page 3: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/3.jpg)
Exemplos de problemas
1. Gerar um relatório/documento demorado
2. Enviar muitos emails
3. Editar um vídeo online
![Page 4: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/4.jpg)
Caso Real
![Page 5: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/5.jpg)
Nããããããããããããão
![Page 6: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/6.jpg)
Apresentando o Celery
1. Task Queue Assíncrona
2. Agenda tarefas
3. Integração com Django, flask, tornado, etc.
![Page 7: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/7.jpg)
![Page 8: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/8.jpg)
Mão na Massa
Instalar o RabbitMQ1. Instalar do site ou com APT-GET
a. sudo rabbitmqctl add_user myuser mypasswordb. sudo rabbitmqctl add_vhost myvhostc. sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
![Page 9: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/9.jpg)
Instalar e configurar o Celery
pip install celerysettings.py:
![Page 10: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/10.jpg)
Instalar e configurar o Celery
na pasta do projeto__init__.py:
![Page 11: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/11.jpg)
Instalar e configurar o Celery
na pasta do projetocelery.py:
![Page 12: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/12.jpg)
Criando a task assíncrona
Na pasta do APPtasks.py
![Page 13: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/13.jpg)
Agora é só chamar a Task
views.py
![Page 14: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/14.jpg)
Rodar o Celerycelery --app=nomeprj worker --loglevel=INFO
![Page 15: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/15.jpg)
Se quiser, só chamar a função
![Page 16: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/16.jpg)
Em produção, use o supervisor
1. sudo apt-get install supervisor2. 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=INFOdirectory=/home/deploy/webapps/pasta_projetouser=nobodyautostart=trueautorestart=trueredirect_stderr=true
![Page 17: Tarefas demoradas de forma assíncrona com django e celery](https://reader036.vdocuments.net/reader036/viewer/2022062304/55d05a8ebb61ebc6578b4680/html5/thumbnails/17.jpg)
Reiniciar o supervisor
1. supervisorctl reread
2. supervisorctl update
3. supervisorctl start celery