Using task queues and background workers can greatly speed up your web applications by offloading work to a different process. This prevents your web app from being blocked from responding to user requests while it does the work.
I've been looking at a couple of options for setting up a task queue and background worker, and it's something that a lot of readers and students have asked for.
The two options I'm looking at are rq
and celery
, and having tried both I can recommend rq
for most applications. It's a bit simpler, scales well, and it does most of what you might need for a task queue.
On the other hand, celery
is more feature-rich but also more complicated (both to learn and use). I found that I could use rq
after just a short learning curve, whereas celery
took substantially longer. Since developer time is one of our most valuable assets, that's definitely something to have in mind!