Using RabbitMQ, celery survives most error
scenarios, and your tasks will never be lost.

Distributed

Runs on one or more machines. Supports
clustering when used in combination with
RabbitMQ. You can set up new workers without
central configuration (e.g. use your dads laptop
while the queue is temporarily overloaded).

Concurrency

Tasks are executed in parallel using the
multiprocessing module.

Scheduling

Supports recurring tasks like cron, or specifying
an exact date or countdown for when after the task
should be executed.

Performance

Able to execute tasks while the user waits.

Return Values

Task return values can be saved to the selected
result store backend. You can wait for the result,
retrieve it later, or ignore it.