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')
ですが、私はメソッドを呼び出すたびにちょうど醜いです。私は通常の関数としてデコレータとしてではなく、cache.regionを使用するために探していますが、私はそれに関するドキュメントを見つけることができません。線に沿って何か:
@cache_region('short_term', 'get_children', self.id)
def get_children(self, childrentype=None):
...
最善のアプローチは何ですか:
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
、あるいはもっとすごいのようなものでしょうか?