Distributed Task Queue

Task queues are used as a mechanism to distribute work across threads or machines.

A task queue's input is a unit of work, called a task, dedicated worker processes
then constantly monitor the queue for new work to perform.

Celery communicates via messages, usually using a broker to mediate between clients
and workers. To initiate a task a client puts a message on the queue, the broker
then delivers the message to a worker.

A Celery system can consist of multiple workers and brokers, giving way to high
availability and horizontal scaling.
