to use celery. Install redis on your machine To start redis services brew services start redis brew services stop redis redis-cli #To show redis intergrated terminal cli 1. pip install celery==5.2.7 version 3.1 not favorable will throw namespace error 2. pip install django-celery-results #Storing the results 3. pip install redis 4. pip install django-celery-beat In settings.py add: CELERY_BROKER_URL ='redis://127.0.0.1:6379' #Url to your redis broker CELERY_ACCEPT_CONTENT = ['application/json'] #define the type of response CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json' CELERY_TIMEZONE = 'Africa/Nairobi' #defining timezone CELERY_RESULT_BACKEND= 'django-db'# Helps us to view status of running tasks #celery beat settings CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' To see results add to installed apps 'django_celery_results' 'django-celery-beat' In main project folder create celery.py file and add: from __future__ import absolute_import, unicode_literals import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_celery.settings') #Project directory to settings file app = Celery('django_celery') # ADD PROJECT NAME app.conf.enable_utc = False # Telling django to use our own written timezone app.conf.update(timezone = 'Africa/Nairobi') app.config_from_object(settings,namespace='CELERY') #The uppercase name-space means that all Celery configuration options must be specified in uppercase , and start with CELERY_ app.autodiscover_tasks() #TO automatically discover tasks from all of your installed apps, following the tasks.py convention @app.task(bind=True) def debug_task(self): print(f'Request: {self.request!r}') In main project folder __init__.py file add: =>This ensures that the app is loaded when Django starts from django_celery.celery import app as celery_app __all__ = ('celery_app',) Then create your tasks in apps using task.py naming convention @app.task(bind=True) def debug_task(self): print(f'Request: {self.request!r}') To run celery worker sever use celery -A proj-name worker -l INFO To run celery beat server use celery -A proj-name beat -l INFO