Celery

Celery, What is it?

    • Message in the queue maintains correct order as produced

    • The message is persisted even during downtime unless consumed, hence no tasks are missed even when there is downtime

    • The system is distributed, able to scale up or down based on requirements, and has no single point of failure (SPOF)

  • For the message (task) queue, the following database can be used: Redis, AWS SQS, or RabbitMq

Keywords to know

  • Producer: service that emits the message is called producer worker

  • Consumer: the service that listens and reacts to messages is called the consumer worker. This is how communication happens

Additional functionalities

  • task:

  • queue:

  • delay vs async:

  • specifying priorities

  • specifying number of cores

Flower

  • Celery comes with in-build visualisation functionality named flower

  • Flower UI is easy for monitoring on tasks, queues and processing of different queued tasks

Implementation

Example to explain use case:

  • used for async tasks, the best way to explain it is through a web scraper

  • If one wants to scrap 1000 pages and need sleep time of 2 min for each page.

    • The synchronous task takes min time of 2000 min to process all pages

    • But the async operation, 64 processes at a time can bring down the execution time to (1000/64)*2 minutes to process

Reference for Further Reading

Last updated

Was this helpful?