0
0
Djangoframework~10 mins

Celery installation and setup in Django - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Celery installation and setup
Install Celery package
Create celery.py in Django project
Configure Celery app with broker
Update __init__.py to load Celery
Run Celery worker
Send tasks to Celery
Tasks executed asynchronously
This flow shows the steps to install Celery, configure it in a Django project, and run tasks asynchronously.
Execution Sample
Django
pip install celery
# celery.py
from celery import Celery
app = Celery('proj', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y
This code installs Celery, creates a Celery app with Redis broker, and defines a simple task.
Execution Table
StepActionCode/CommandResult/Output
1Install Celery packagepip install celeryCelery installed successfully
2Create celery.py filefrom celery import Celery app = Celery('proj', broker='redis://localhost:6379/0')Celery app instance created with Redis broker
3Define task function@app.task def add(x, y): return x + yTask 'add' registered with Celery
4Update __init__.pyfrom .celery import app as celery_app __all__ = ('celery_app',)Celery app loaded when Django starts
5Run Celery workercelery -A proj worker --loglevel=infoWorker starts and listens for tasks
6Call task asynchronouslyadd.delay(4, 6)Task sent to worker, returns AsyncResult
7Worker executes taskadd(4, 6)Task runs, returns 10
8Fetch resultresult.get()Returns 10
9ExitStop workerWorker stops, no more tasks processed
💡 Worker stopped, no more tasks processed
Variable Tracker
VariableStartAfter Step 3After Step 6After Step 7Final
appNoneCelery instance createdSame instanceSame instanceSame instance
addNoneTask registeredTask called asynchronouslyTask executed, result 10Task available
resultNoneNoneAsyncResult objectResult value 10Result value 10
Key Moments - 3 Insights
Why do we need to update __init__.py to import celery app?
Updating __init__.py ensures the Celery app is loaded when Django starts, so tasks are registered and workers can find them, as shown in step 4 of the execution_table.
What does add.delay(4, 6) do compared to add(4, 6)?
add.delay(4, 6) sends the task to the Celery worker to run asynchronously (step 6), while add(4, 6) runs the function immediately and synchronously (step 7).
Why do we need a message broker like Redis?
The broker (Redis) queues tasks and lets workers receive them asynchronously, as configured in step 2. Without it, Celery cannot distribute tasks.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of the task after step 7?
A10
B4
C6
DNone
💡 Hint
Check the 'Result/Output' column at step 7 where the task executes.
At which step is the Celery worker started to listen for tasks?
AStep 6
BStep 3
CStep 5
DStep 8
💡 Hint
Look for the step mentioning 'Run Celery worker' in the execution_table.
If we skip updating __init__.py, what will happen when Django starts?
ACelery app loads normally
BTasks may not be registered and workers can't find them
CRedis broker will not start
DCelery worker will start automatically
💡 Hint
Refer to key_moments about __init__.py update and step 4 in execution_table.
Concept Snapshot
Celery installation and setup in Django:
1. Install Celery with pip.
2. Create celery.py with Celery app and broker config.
3. Define tasks with @app.task.
4. Import Celery app in __init__.py to load on Django start.
5. Run worker with 'celery -A proj worker'.
6. Call tasks asynchronously with task.delay().
Full Transcript
This visual execution shows how to install and set up Celery in a Django project. First, Celery is installed using pip. Then, a celery.py file is created where a Celery app instance is made and configured to use Redis as the message broker. Tasks are defined using the @app.task decorator. The __init__.py file is updated to import the Celery app so it loads when Django starts. Next, the Celery worker is run to listen for tasks. Tasks are sent asynchronously using the delay() method, and the worker executes them, returning results. The process stops when the worker is stopped. Variables like the Celery app instance, task function, and task result change state through these steps. Key points include why __init__.py must import the app, the difference between calling a task directly and asynchronously, and the role of the message broker. The quiz questions check understanding of task results, worker start step, and consequences of missing __init__.py update.