MemcacheStorage.py 851 B

12345678910111213141516171819202122232425262728293031
  1. from werobot.session import SessionStorage
  2. from werobot.utils import json_loads, json_dumps
  3. from website.utils import cache
  4. class MemcacheStorage(SessionStorage):
  5. def __init__(self, prefix='ws_'):
  6. self.prefix = prefix
  7. self.cache = cache
  8. @property
  9. def is_available(self):
  10. value = "1"
  11. self.set('checkavaliable', value=value)
  12. return value == self.get('checkavaliable')
  13. def key_name(self, s):
  14. return '{prefix}{s}'.format(prefix=self.prefix, s=s)
  15. def get(self, id):
  16. id = self.key_name(id)
  17. session_json = self.cache.get(id) or '{}'
  18. return json_loads(session_json)
  19. def set(self, id, value):
  20. id = self.key_name(id)
  21. self.cache.set(id, json_dumps(value))
  22. def delete(self, id):
  23. id = self.key_name(id)
  24. self.cache.delete(id)