私の App Engine アプリ (Python 2.7 では、スレッドセーフ) で、私の ChildModel 種類のすべてのエンティティに関する情報を表示できるようにしたいと考えています。memcache は機能していると思いますが、ChildModel には ParentModel に接続するプロパティがあるため、理解できないことがいくつかあります。
私は現在、次のモデルを持っています。
class ParentModel(db.Model):
name = db.StringProperty()
# currently 109 of these
class ChildModel(db.Model):
name = db.StringProperty()
parent_program = db.ReferenceProperty(ParentModel)
# currently 758 of these
Nick Johnson のブログの例を使用して memcache を実装しました。
class AllEntities(webapp2.RequestHandler):
def get(self):
entitylist = deserialize_entities(memcache.get("entitylist"))
if not entitylist:
entitylist = ChildModel.all().fetch(None)
memcache.set("entitylist", serialize_entities(entitylist))
totalnum = ChildModel.all().count()
これを初めて実行すると、appstats に次のように表示されます。
datastore_v3.Get 758
datastore_v3.RunQuery 3
datastore_v3.Next 2
memcache.Get 1
memcache.Set 1
その後、appstats に次のように表示されます。
datastore_v3.Get 758
datastore_v3.RunQuery 2
memcache.Get 1
memcache のサイズ (1304599 バイト) に基づいて、memcache が正しく設定されているようです。しかし、758 の datastore_v3.Get を停止する方法がわかりません。これは非常に遅く、Datastore Small Operations と Datastore Read Operations のクォータで私を殺しています。
誰かが私が間違っていることを理解するのを手伝ってもらえますか?