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.