← Back to Python

All Topics

Advertisement

Learn/Python/Advanced Python

Celery Task Queue

Topic: Async Tasks

Advertisement

Introduction

Celery provides distributed task queues for asynchronous task execution.

Basic Setup

# tasks.py
from celery import Celery

app = Celery("tasks", broker="redis://localhost:6379")

@app.task
def send_email(recipient, subject):
    # Email sending logic
    return {"sent": True, "recipient": recipient}

Running Workers

celery -A tasks worker --loglevel=info

Calling Tasks

# Call asynchronously
result = send_email.delay("user@email.com", "Hello")
result.get(timeout=10)  # Wait for result

# With ETA
from datetime import timedelta
send_email.apply_async(
    args=["user@email.com"],
    eta=datetime.now() + timedelta(hours=1)
)

Periodic Tasks

@app.task
def daily_report():
    pass

app.conf.beat_schedule = {
    "daily-report": {
        "task": "tasks.daily_report",
        "schedule": 86400.0,  # Every 24 hours
    }
}

Practice Problems

  1. Create basic Celery tasks
  2. Configure Redis broker
  3. Schedule periodic tasks
  4. Handle task retries
  5. Monitor with Flower

Advertisement

Advertisement

Need More Practice?

Get personalized Python help from ChatWhole's AI-powered platform.

Get Expert Help →