我正在做a really simple API测试为python呼叫spore客户端代。
在WSGI中,将数据保存在服务器中的最佳方法是什么?
我尝试以这种方式制作RedisDict:
import json
from redis import Redis
redis = Redis()
class RedisDict:
"""A redis based dict."""
def dict(self):
TODOS = redis.get('TODOS')
return json.loads(TODOS)
def keys(self):
return self.dict().keys()
def __getitem__(self, key):
return self.dict()[key]
def __setitem__(self, key, value):
obj = self.dict()
obj[key] = value
redis.set('TODOS', json.dumps(obj))
def __delitem__(self, key):
obj = self.dict()
del obj[key]
redis.set('TODOS', json.dumps(obj))
todos = RedisDict()
如何让dict(todos)
返回字典?
这在WSGI环境中是否足够?
答案 0 :(得分:1)
假设方法dict
返回字典,为什么不这样做:
dict_i_wanted = todos.dict()
如果您必须支持dict_i_wanted = dict(todos)
,请添加此方法:
def __iter__(self):
return self.dict().iteritems()
答案 1 :(得分:0)
如果您想创建自己的“dict-
like”类,则需要实现字典协议。最简单的方法是继承collections.Mapping
并实现表中提到的抽象方法。您需要实现那些与相应的dict
方法相同的行为;例如__iter__
应该返回所有(key, value)
元组的迭代。 (这是让dict(todos)
工作所需的一种方法。没有像您尝试使用dict
方法那样强制使用dict()
的神奇方法。)