为什么在这个NDB put操作结束时有一个memcache删除?

时间:2014-03-16 17:10:29

标签: python google-app-engine memcached app-engine-ndb

我只是在Google App Engine上试用Appstats和NDB。

据我所知,关注put后的立即获取将来自本地内存缓存,但为什么会有memcache删除操作?

这是所有代码:

import webapp2
from google.appengine.ext import ndb

class Specs(ndb.Model):
    make = ndb.StringProperty()
    model = ndb.StringProperty()
    doors = ndb.IntegerProperty()
    wheels = ndb.IntegerProperty()

class Car(ndb.Model):
    _use_memcache = True
    _use_cache = True
    specs = ndb.LocalStructuredProperty(Specs)

class MainHandler(webapp2.RequestHandler):
    def get(self):
        my_car = Car(id='some-car')
        specs = Specs(
          make = "Volvo",
          model = "240",
          doors = 5,
          wheels = 4
        )
        my_car.specs = specs
        result = my_car.put()

        my_car_by_get = result.get()

        self.response.write('Saved car')

app = webapp2.WSGIApplication([
    ('/', MainHandler),

], debug=True)

Appstats时间表:

Appstats timeline of an NDB put operation

1 个答案:

答案 0 :(得分:1)

由于自动缓存,当您使用NDB时,每memcache.Delete()都会调用put(),这是设计使然。如果您希望在缓存方面有更好的控制或不同的行为,可以阅读有关NDB caching的更多信息。