Backend Technologies · Python
Celery — Free Learning Resources
Free, printable resources for Celery — practice problems, quick-reference cheatsheet, and an interview prep sheet. No sign-up required.
Celery — Practice Worksheet
Structured exercises and problems to build hands-on Celery skills. Work through key concepts step by step.
Celery — Cheatsheet
One-page quick-reference for Celery — key syntax, commands, patterns, and best practices at a glance.
Celery — Interview Sheet
Top Celery interview questions with concise answers. Get ready for any technical round with this focused prep sheet.
About Celery
Celery is an asynchronous task queue/job queue for Python based on distributed message passing. It handles millions of tasks a day in production, integrating with brokers like Redis and RabbitMQ. Celery is the standard solution for offloading time-consuming operations — email sending, PDF generation, API calls — from web request handlers.
CeleryCheat Sheet — What's Covered
- ✓Task definition with @app.celery.task and delay() / apply_async() dispatch
- ✓Broker configuration — Redis vs. RabbitMQ tradeoffs
- ✓Task retries, exponential backoff, and max_retries settings
- ✓Celery Beat — periodic tasks and crontab scheduling
- ✓Monitoring with Flower and task state inspection
Frequently Asked Questions — Celery
How does Celery work?
Your app sends a task message to a broker (Redis/RabbitMQ). Celery worker processes consume messages from the broker, execute the task function, and optionally store results in a result backend. Workers run as separate processes, independent of your web server.
What is the difference between delay() and apply_async()?
delay() is a shortcut for apply_async() with positional arguments: add.delay(2, 3). apply_async() accepts kwargs for advanced options: add.apply_async(args=[2, 3], countdown=10, retry=True, queue='high_priority'). Use apply_async() when you need control.
How do you retry failed tasks in Celery?
In the task, call self.retry(exc=exc, countdown=60, max_retries=3) inside an except block. Use autoretry_for=(Exception,) and retry_backoff=True on @app.task to retry automatically with exponential backoff. Failed tasks can also go to a dead-letter queue.
What is Celery Beat?
Celery Beat is a scheduler that sends periodic task messages. Define schedules in the beat_schedule config: {'add-every-30-seconds': {'task': 'tasks.add', 'schedule': 30.0}}. Run celery -A myapp beat alongside workers. Use crontab() for cron-style scheduling.
How do you monitor Celery tasks in production?
Flower is the standard Celery monitoring tool — run celery -A myapp flower for a web UI showing task status, worker state, and throughput. Integrate with Datadog or Prometheus via celery-exporter. Log task IDs on dispatch and check state with AsyncResult(task_id).state.
Who Is This For?
Python backend developers who need to run background jobs, periodic tasks, or distributed work queues alongside their web applications.