tarefas demoradas de forma assíncrona com django e celery

Post on 16-Aug-2015

535 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 terceiros, resposta do SO, etc)

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 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 ".*" ".*" ".*"

Instalar e configurar o Celery

pip install celerysettings.py:

Instalar e configurar o Celery

na pasta do projeto__init__.py:

Instalar e configurar o Celery

na pasta do projetocelery.py:

Criando a task assíncrona

Na pasta do APPtasks.py

Agora é só chamar a Task

views.py

Rodar o Celerycelery --app=nomeprj worker --loglevel=INFO

Se quiser, só chamar a função

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

Reiniciar o supervisor

1. supervisorctl reread

2. supervisorctl update

3. supervisorctl start celery

Obrigado!

Fernando Freitas Alves (@ffreitasalves)

ffreitasalves@gmail.comhttp://fernandofreitasalves.com

top related