You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
855 B
33 lines
855 B
from werobot.session import SessionStorage
|
|
from werobot.utils import json_loads, json_dumps
|
|
|
|
from djangoblog.utils import cache
|
|
|
|
|
|
class MemcacheStorage(SessionStorage):
|
|
def __init__(self, prefix='ws_'):
|
|
self.prefix = prefix
|
|
self.cache = cache
|
|
|
|
@property
|
|
def is_available(self):
|
|
value = "1"
|
|
self.set('checkavaliable', value=value)
|
|
return value == self.get('checkavaliable')
|
|
|
|
def key_name(self, s):
|
|
return '{prefix}{s}'.format(prefix=self.prefix, s=s)
|
|
|
|
def get(self, id):
|
|
id = self.key_name(id)
|
|
session_json = self.cache.get(id) or '{}'
|
|
return json_loads(session_json)
|
|
|
|
def set(self, id, value):
|
|
id = self.key_name(id)
|
|
self.cache.set(id, json_dumps(value))
|
|
|
|
def delete(self, id):
|
|
id = self.key_name(id)
|
|
self.cache.delete(id)
|