Google app engine 在不使用太多CPU时间的情况下保存具有多个属性的模型的变通方法?
我有一个具有很多属性的模型,当我尝试编写它时,我在日志上得到一个警告,该请求占用了太多的CPU时间(超过1000 CPU_ms和超过8000api_CPU_ms) 以下测试程序演示了该问题:Google app engine 在不使用太多CPU时间的情况下保存具有多个属性的模型的变通方法?,google-app-engine,Google App Engine,我有一个具有很多属性的模型,当我尝试编写它时,我在日志上得到一个警告,该请求占用了太多的CPU时间(超过1000 CPU_ms和超过8000api_CPU_ms) 以下测试程序演示了该问题: class TestModel(db.Model): user = db.UserProperty() p1 = db.StringProperty() p2 = db.StringProperty() p3 = db.StringProperty() p4
class TestModel(db.Model):
user = db.UserProperty()
p1 = db.StringProperty()
p2 = db.StringProperty()
p3 = db.StringProperty()
p4 = db.StringProperty()
p5 = db.StringProperty() # 475cpu_ms with 1..5 only
p6 = db.StringProperty()
p7 = db.StringProperty()
p8 = db.StringProperty()
p9 = db.StringProperty()
p10 = db.StringProperty() # 760cpu_ms with 1..10 only
p11 = db.StringProperty()
p12 = db.StringProperty()
p13 = db.ListProperty(unicode)
p14 = db.ListProperty(int)
p15 = db.ListProperty(int)
p16 = db.BooleanProperty()
p17 = db.DateTimeProperty() #over 1000cpu_ms with all these
class DebugitHandler(webapp.RequestHandler):
def get(self):
instance = TestModel()
instance = instance.put()
self.response.out.write("Done.")
所有的CPU时间都花在这个调用上
除了将模型拆分为多个(这可能不会有帮助,因为我仍然拥有相同数量的属性)之外,还有什么方法可以解决这个问题吗?将具有20个属性的1个实例放入数据存储中而不占用1秒CPU时间的方法?如中所述:
随着与给定实体关联的属性数量的增加,
读写该实体所需的CPU时间也是如此
如果不需要对这些属性中的每一个进行排序或筛选,可以向其中一些属性添加index=False
声明;这将节省一些CPU时间
class TestModel(db.Model):
user = db.UserProperty(indexed = False)
p1 = db.StringProperty(indexed = False)
p2 = db.StringProperty(indexed = False)
p3 = db.StringProperty(indexed = False)
....