我们的 Python Google AppEngine 应用程序中遇到了一些陈旧的数据存储区数据。我检查了日志并在应该更新相应数据的请求中看到了以下警告:
Memcache set_multi() error: [':part', ':full']
日志条目是在 ndb.put() 之后生成的。没有引发异常,只有这个静默日志输出。但是,模型未写入数据存储区。这种情况反复发生了4次。
准确地说,我不能 100% 确定日志是在我的模型的 put() 期间还是之后生成的,而 GAE 正在为该特定请求保存 appstats。此外,这个日志说我们的内存缓存已满,我不太清楚这是个问题(缓存应该不时变满,对吧?)。
然而,在生成此日志的所有情况下,put() 都没有将数据写入数据存储区,我无法确定发生这种情况的原因。如果 ndb.put() 失败,我预计会引发某种错误/异常(我的代码处理这些),但警告是无声的。
有什么建议吗?
最佳答案
您可以在 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)
关于python - 带有ndb的Google AppEngine中的Memcache set_multi()错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31473235/