我们在Python Google AppEngine应用程序中遇到了一些陈旧的数据存储区数据。我检查了日志,并在应该更新相应数据的请求中看到以下警告:
Memcache set_multi() error: [':part', ':full']
日志条目是在ndb.put()之后生成的。没有引发异常,只有 silent 日志输出。但是,该模型未写入数据存储区。这反复发生了4次。
准确地说,我不是100%确定日志是在我的模型的put()期间生成还是之后,而GAE正在为该特定请求保存appstats。另外,这个日志说我们的memcache已经满了,我不清楚它是不是一个问题(缓存有时会不时出现,对吧?)。
然而,在生成此日志的所有情况下,put()都没有将数据写入数据存储区,我无法确定发生这种情况的原因。如果ndb.put()失败,我会期望引发某种类型或错误/异常(我的代码处理这些),但警告是静默的。
有什么建议吗?
答案 0 :(得分:1)
您可以在NDB Context class中关闭内存缓存。 这个SO答案显示了如何启用/禁用内存缓存: ndb Models are not saved in memcache when using MapReduce
此代码禁用所有缓存:
ndb_ctx = ndb.get_context()
ndb_ctx.set_cache_policy(lambda key: False)
ndb_ctx.set_memcache_policy(lambda key: False)