Integrating π Celery with Django via Redis server ,To-Do asynchronously πtask without stopping the main-flow π of Django-project .It increase your speed π and user experience π€΅ of website . This repo explain how to setup Celery,and integrate it with the Django-Framework.
Note : Steps to steup Celery on production-side is different
π Reference link to setup Celery on production side
Celery package help us to asynchronous tasks on different worker π₯οΈ ,That is on Redis server. The Celery also have some great features in scheduling π task after a certain period of time. The tasks are excuted on different server (Redis server), and are not run on Django-Server.If we run long and complicated tasks on django server it will reduced the efficiency of website
Modern users expect pages to load instantaneously β‘, to solve this we consider many solutions like multiprocessing, multithreading π§΅, asynchronous functions using async/await or the Message Queues.
Use the package manager pip to install the following modules and packages.
pip install -r requirements.txt
Open terminal and write following commands π
To run Celery worker
celery -A your_django_project_name.celery worker --pool=solo -l info
And in separate terminal run django server
python manage.py runserver
Change the settings for the sender-mail credential in the settings.py
file , enter the sender mail and sender mail-password (SMTP configuartion)
Task are python functions which can be called in the django-project and also be scheduled at particular time.
Task-function can be written in task.py
file and can be imported anywhere in the project
@task()
def Send_Mail_With_Celery(email):
your function goes here....
return "done"
calling function
Send_Mail_With_Celery.delay(args)
Increase Speed β‘ and User-experience of website
NOTE the difference : Celery does not stoped the next page from loading and done the task on worker whereas Without using Celery it took almost 3 seconds β , to load next page
This is just a small-function but imagine making operations on large user-database ,it would be not good
Setup Celery in Django to asynchronous tasks
Pull requests are welcome π€. For major changes, please open an issue first to discuss what you would like to change.