Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python task queue alternatives and frameworks [closed]

There seem to be different implementations of task/job queues for Python 3:

  1. Celery, popular but apparently unmaintained and stale;
  2. RQ, of which I have little information;
  3. TaskTiger, similarly to RQ I know little about it;
  4. Huey , similarly to RQ I know little about it;
  5. WorQ had its last update in 2016.

Then there are “cloud” based solutions like Google’s Task Queue API or AWS’s Cloud Watch Events, but that’s more of a last resort.

For my project I am looking for a stable and active task queue implementation. I’ve used Celery for the past year, but the lack of support and non-attention to existing bugs is worrisome.

What alternatives exist?

like image 801
Jens Avatar asked Oct 01 '17 22:10

Jens


People also ask

What is the difference between celery and RabbitMQ?

From my understanding, Celery is a distributed task queue, which means the only thing that it should do is dispatching tasks/jobs to others servers and get the result back. RabbitMQ is a message queue, and nothing more. However, a worker could just listen to the MQ and execute the task when a message is received.

Is celery a task queue?

Celery is an open source asynchronous task queue or job queue which is based on distributed message passing. While it supports scheduling, its focus is on operations in real time.

What is a Redis queue?

Redis Queue is a python library for queueing jobs for background processing. Since many hosting services will time out on long HTTP requests, it is best to design APIs to close requests as quickly as possible. Redis Queue allows us to do this by pushing tasks to a queue and then to a worker for processing.


2 Answers

I wrote Dramatiq specifically because of my increasing frustration with Celery having used it professionally for years. Check out the motivation page the "why" and a feature comparison between Dramatiq, Celery and RQ. Some highlights:

  • actively developed and used in production
  • great docs
  • automatic retries
  • code auto-reload
  • locks and rate limiting
  • redis and rabbitmq support
like image 57
Bogdan Popa Avatar answered Sep 25 '22 14:09

Bogdan Popa


One new alternative is django-carrot, which came about due to our requirement for a lightweight alternative to Celery, while still providing support for RabbitMQ (I think the other alternatives you've mentioned are all based on Redis)

Django-carrot is still under development but is expected to go into production at my company in the next few weeks

Disclaimer - I'm the author of django-carrot

like image 42
Christopher Davies Avatar answered Sep 24 '22 14:09

Christopher Davies