Worked on this at $dayjob, and we open sourced it yesterday.
Initial driving requirements were:
- Use as part of proof-of-concept testing with a 3rd party memcache proxy that speaks only the binary protocol
- Work well with darner/kestral queues and nosql datastores (via proxies like couchbase’s Moxi). This means no silent failure modes.
- Support both text and binary memcache protocols (selectable backend/proto “drivers”).
- Work with gevent/eventlet; socket monkey-patchable.
- Faster compression. Many libraries use gzip, which is slower than we would like. Chose python-lz4 as compressor (speed/space tradeoff).
- Support pickling (some drivers do not)
- Reduce internal library proliferation. We are using a couple different existing memcache drivers for different things internally, and the plan is to use this to replace all of them.