Long time lurker here. First, thank you all for this incredible product and community. I have learned a great deal in a very short order of time thanks to web2py and this mailing list.
I may have the opportunity to finally contribute back meaningfully. Regarding background message/task queuing I have had great success with a very simple combination that has many extra side benefits. All dependencies (BSON, redis-py, hotqueue) are available via pip for easy installation. Some pros and cons listed below. The short version: Serialize your task/message into a dict, list of dicts, whatever via BSON (Binary JSON = FAST), push it to a queue kept in Redis, background worker pulls from queue and processes it/inserts into db/ whatever you like. Not only messages but I have successfully tested this as a queue for tasks as well. Use a k,v pair in a dict describing your {'action': 'data'}. It's easy to get creative with it. Cons: - More dependencies if you don't already run Redis. - Time to familiarize yourself with Redis. (15 - 20 minutes maybe) - No scheduling built-in but uwsgi decorators can provide cron capabilities for those running uwsgi. I haven't played with them yet but intend to over the next month or two. Benefits: - Still fewer dependencies than celery. Redis becomes the task/ message queue as well as the back end storage and web2py workers process them. - Multiple dbs in Redis can be organized into different queues. - Flexible - Can be adapted to your project fairly easily. - Also can act as a cache. Redis has some really useful data types which you can use to do a lot of your processing in memory. - Has a pub/sub system which can also be incorporated into your queue. Perhaps as a central logging server. - All data in Redis is kept in memory but persisted to disk = blazing fast performance with durability. - Possible simplified application architecture if you use Redis for your task queue, async message/db insert queue, pub/sub system I will be happy to create a slice detailing the process with some abstract examples if anyone has interest in my solution. Thanks again for all your work. I intend to contribute back to web2py as much as I can and all open source because I have learned and built so much with it. -David Bloom