Stompserver is a good option. It is lightweight, easy to install and easy to use from Django / python.
We have a system that uses a toppserver in production to send email and process other jobs asynchronously.
Django stores emails in the database, the model.post_save handler in Django sends the event to stompserver, and stompserver passes the event to a process that performs an asynchronous task (sends an email).
It scales quite well, because you can add consumer processes at runtime - two users can send twice as many letters, and consumers can be on separate machines. One minor complication is that each consumer needs their own named queue, so Django needs to know how many consumers are available, and send events to each queue in a circular fashion. (Two subscribers listening to the same queue will receive each message = duplication). If you need only one consumer process, this is not a problem.
Previously, we had processes that continuously checked the database for tasks, but found that it adds a lot of load to the system, even when nothing needs to be processed.
Gruff Apr 3 '09 at 16:15 2009-04-03 16:15
source share