0
我有多個類具有以下結構的:類方法的燒杯緩存區域 - 不是用作裝飾器?
class Thing(Base):
id = Column(Integer, primary_key=True)
@cache_region('short_term', 'get_children')
def get_children(self, childrentype=None):
return DBSession.query()...
的問題然而是燒杯將緩存get_children()在同一區域無論自的,使得高速緩存沒有意義的。一個破解是:
def get_children(self, id, childrentype=None):
...
children = thing.get_children(thing.id, 'asdf')
但傳遞Thing.id每次我調用該方法只是醜陋的。我期待使用cache.region作爲常規函數,而不是作爲裝飾器,但我找不到任何文檔。沿着線的東西:
def get_children(self, childrentype=None):
if "cached in cache_region(Thing.get_children, 'short_term', 'get_children', self.id, childrentype)":
return "the cache"
else:
query = DBSession.query()...
"cache query in cache_region(Thing.get_children', 'short_term', 'get_children', self.id, childrentype)"
return query
甚至更多真棒會是這樣的:
@cache_region('short_term', 'get_children', self.id)
def get_children(self, childrentype=None):
...
什麼是最好的方法?