Here I’m assuming you already have your basic Django project setup. And, already know what is? if not, I’ll suggest getting a basic understanding of it . So let’s just directly jump into the steps. Celery here Please follow the comments to get a basic understanding of the code. Install celery into your project. As celery also need a default broker (a solution to send and receive messages, and this comes in the form of separate service called a message broker). Check the list of available brokers: . So you can directly install the celery bundle with the broker. . BROKERS Bundles available (env)$ pip install "celery[redis]" Once installed. Head to the project folder which contains and create a new file called and put the following code into it. settings.py celery.py os celery Celery os.environ.setdefault( , ) app = Celery( , backend= , broker= ) app.config_from_object( , namespace= ) app.autodiscover_tasks() print( .format(self.request)) import from import # set the default Django settings module for the 'celery' program. 'DJANGO_SETTINGS_MODULE' 'meupBackend.settings' 'meupBackend' 'redis' 'redis://localhost:6379' # Using a string here means the worker doesn't have to serialize # the configuration object to child processes. # - namespace='CELERY' means all celery-related configuration keys # should have a `CELERY_` prefix. 'django.conf:settings' 'CELERY' # Load task modules from all registered Django app configs. @app.task(bind=True) : def debug_task (self) 'Request: {0!r}' and now head over to of the same folder and put the following code. __init__.py __future__ absolute_import, unicode_literals .celery app celery_app __all__ = ( ,) from import # This will make sure the app is always imported when # Django starts so that shared_task will use this app. from import as 'celery_app' and now head over to settings.py and insert the following code into respective places. BROKER_URL = CELERY_RESULT_BACKEND = CELERY_ACCEPT_CONTENT = [ ] CELERY_TASK_SERIALIZER = CELERY_RESULT_SERIALIZER = INSTALLED_APPS = [ , , , ] ### settings.py 'redis://localhost:6379' 'redis://localhost:6379' 'application/json' 'json' 'json' # others app 'celery' 'django_celery_results' 'django_celery_beat' """ django_celery_results: This extension enables you to store Celery task results using the Django ORM. """ """ django_celery_beat: This extension enables you to store the periodic task schedule in the database. The periodic tasks can be managed from the Django Admin interface, where you can create, edit and delete periodic tasks and how often they should run. """ and now, add a basic task somewhere in your app. __future__ absolute_import celery shared_task % param ### tasks.py (in any of your app) from import from import @shared_task : def test (param) return 'The test task executed with argument "%s" ' So, up until now. We’ve done the celery integration with Django. Now, go to your terminal and install redis server. This is mainly the broker server, what we installed with celery before was a python package which helps us to talk 😅 to this server. pong # ## Terminal (env)$ brew install redis # once installed, run: (env)$ redis-server # Terminal 2, open another terminal or tab (env)$ redis-cli ping If you get the response, then you’re fine to move forward, can quit the server and close the terminals. pong If you’re on Windows and Linux, please check out how you can install the Redis here: . Now… run: https://redis.io/download ( )$ manage.py migrate env python This will reflect the migrations of django_celery_result and django_celery_beat . Now install the flower with the following command. (env)$ pip install flower Once installed. Open 3 terminals and run: Terminal 1: (env)$ redis-server Terminal 2: $ python manage.py runserver Terminal 3: (env)$ flower -A meup ## here `meup` is a project name Now your project will be running on , Redis will be running on port , and flower will be running on . localhost:8000 6379 localhost:5000 Please make sure your Redis server is running on a port 6379 or it’ll be showing the port number in the command line when it got started. So put that port number into you Redis server config into celery configurations file. 🙏 Previously published at https://medium.com/@abheist/django-celery-redis-and-flower-9b5a4d876870