読者です 読者をやめる 読者になる 読者になる

python-memcachedの(de)serializeにmsgpackを使う

Python

msgpackについては以下のエントリを参照。

こんな感じか?

import msgpack

class Pickler(object):
    def __init__(self, fp, protocol=None):
        self.fp = fp

    def dump(self, value):
        self.fp.write(msgpack.packb(value))

class Unpickler(object):
    def __init__(self, fp, protocol=None):
        self.fp = fp

    def load(self):
        return msgpack.unpackb(self.fp.read())

if __name__ == '__main__':
    from memcache import Client

    cl = Client(["127.0.0.1:11211"],
                pickler=Pickler,
                unpickler=Unpickler)
    cl.set("key", ["spam", "egg", "ham"])
    value = cl.get("key")
    assert value == ["spam", "egg", "ham"]

「msgpack.Packer, msgpack.Unpackerをインスタンス化して・・・」とか、「unpacker.feedを使って・・・」のような戦略も考えられるが、あまり考えていないし、検証もしていない。