Para el siguiente tutorial necesitaremos instalar redis ya se usando docker o el siguiente comando apt-get install redis-server
Luego vamos a instalar django en un entorno virtual (si no sabes como hacerlo te recomiendo leer entornos virtuales)
Además necesitamos las siguientes dependencias
celery==4.2.1 django-celery==3.2.2 django-redis==4.10.0 redis==3.2.1
Ahora vamos al setting.py e incluiremos en las aplicaciones instalada a celery y agregaremos las siguientes configuraciones
INSTALLED_APPS = [ ...
'celery', ... ]
veamos la estructura del proyecto un segundo para comprender la siguiente explicación
--root
--app
--name_app
----- __init__.py
----- celery.py
----- settings.py
En el fichero init vamos a pegar __init__.py
from __future__ import absolute_import, unicode_literals # This will make sure the app is always imported when # Django starts so that shared_task will use this app. from .celery import app as celery_app __all__ = ('celery_app',)
en el fichero celery.py pegaremos el siguiente código
from __future__ import absolute_import, unicode_literals import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'trading.settings') app = Celery('app_name', include=['apps.core.tasks']) app.config_from_object('django.conf:settings') app.conf.update( BROKER_URL = 'redis://localhost:6379/0', ) app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) app.conf.CELERY_ALWAYS_EAGER = True app.conf.CELERY_EAGER_PROPAGATES_EXCEPTIONS = True
Por último solo falta ejecutar los worker que resolveran las tareas asincronas, para ello procedemos a abrir el terminal y activar el entorno virtual donde ejecutaremos el comando:
celery worker -A app_name -l info