A Celery-like Python Task Queue in 55 Lines of Code
jeffknupp.com
jeffknupp.com
We use it in production and it's been rock-solid. The documentation is sparse but the source is easy to follow.
http://docs.python.org/2/library/pickle.html#object.__getini...
Having a way to pickle code objects and their dependencies is a huge win,
and I'm angry I hadn't heard of PiCloud earlier.
That's a nice use of the cloud library, without using the PiCloud service. Unfortunately, the PiCloud service itself is shutting down on February 25th (or thereabouts).Source: http://blog.picloud.com/2013/11/17/picloud-has-joined-dropbo...
They are supporting much of the PiCloud functionality, but not function publishing, which I used quite a lot. (That was a way you could "publish" a function to PiCloud, and then call it from a RESTful interface. It was a nice way to decouple my computational code from my website, which has very different dependencies.)
I fear it is more oriented toward the use case of doing long running scientific jobs, rather than short Celery-like jobs. I hope for the best.
I've yet to find/see a background worker pool that played nicely (properly) with SQS.
Why don't anyone build Celery and Redis alternative using this?
That doesn't help with communicating with a distributed worker pool, though.
It may be straightforward to write a functional Redis alternative in pure python using this library, but I would certainly have questions/concerns about performance.
The best you can hope is to use the Titanic Service Protocol and just throw data into some sort of disk store. I've looked into doing this, but I settled on using RabbitMQ instead for persistence. Unless you're dealing with more than 10k messages a second, it's just as easy as ZeroMQ.
After a few months of experimenting, I've come to the conclusion that some combination of ZeroMQ and RabbitMQ is likely the easiest solution currently for a combination of low-overhead distributed messaging and broker-assisted persistent messaging.
https://github.com/malthe/pq/blob/master/pq/__init__.py#L224
It does about 1000 ops per second, depending on your database configuration, network etc.
If you don't need the complexity (most don't), need persistence, transactional guarantees and already have PostgreSQL in your stack, then the pq-library is probably a good option.
It's not really for a distributed setup, but meant to operate within a cluster (local area network, same data center). Most people don't have distributed systems ;-).