memcachedstorage.py 987 B

123456789101112131415161718192021222324252627282930313233343536
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. from wechatpy.session import SessionStorage
  4. from wechatpy.utils import to_text
  5. from wechatpy.utils import json
  6. class MemcachedStorage(SessionStorage):
  7. def __init__(self, mc, prefix='wechatpy'):
  8. for method_name in ('get', 'set', 'delete'):
  9. assert hasattr(mc, method_name)
  10. self.mc = mc
  11. self.prefix = prefix
  12. def key_name(self, key):
  13. return '{0}:{1}'.format(self.prefix, key)
  14. def get(self, key, default=None):
  15. key = self.key_name(key)
  16. value = self.mc.get(key)
  17. if value is None:
  18. return default
  19. return json.loads(to_text(value))
  20. def set(self, key, value, ttl=0):
  21. if value is None:
  22. return
  23. key = self.key_name(key)
  24. value = json.dumps(value)
  25. self.mc.set(key, value, ttl)
  26. def delete(self, key):
  27. key = self.key_name(key)
  28. self.mc.delete(key)