Simple approach to launching background task in Django

asynchronous, background-process, deferred, django, python

Solution

If you're willing to install a 3rd party library, but you want something a whole lot simpler than Celery, check out Redis Queue. It does require Redis, which is pretty easy in itself, but that can provide a lot of other benefits as well.

RQ itself has almost zero configuration. It's startlingly simple.

References:

- http://python-rq.org/

- http://nvie.com/posts/introducing-rq/

- https://devcenter.heroku.com/articles/python-rq (RQ on Heroku)

Problem

I have a Django website, and one page has a button (or link) that when clicked will launch a somewhat long running task. Obviously I want to launch this task as a background task and immediately return a result to the user. I want to implement this using a simple approach that will not require me to install and learn a whole new messaging architecture like Celery for example. I do not want to use Celery! I just want to use a simple approach that I can set up and get running over the next half hour or so. Isn't there a simple way to do this in Django without having to add (yet another) 3rd party package?

Original source

Related problems