在我的 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 的配额上丧命。
有人可以帮我弄清楚我做错了什么吗?