Celery Task Queue

Advanced PythonAsync TasksFree Lesson

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

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement