python - 带有ndb的Google AppEngine中的Memcache set_multi()错误

标签 python google-app-engine google-cloud-datastore app-engine-ndb

我们的 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/

相关文章:

java - python 中的 utf-8 字符串索引与 java 不兼容

google-app-engine - 一个 Google App Engine 实例可以处理多少个请求?

google-app-engine - OAuth2 Decorator oauth 感知强​​制认证

python - 访问相关的对象键而不在 App Engine 中获取对象

python - 对具有字符串和数字的 DataFrame 索引进行排序

python - 暂时忽略 Python 中的 SIGINT

android - 如何在运行后端代码时更改 android studio 中的默认端口号?

python - Google App Engine ndb.delete_multi() 的效率如何?

node.js - 使用 App Engine Node.js 后端的 Firestore 使用什么依赖项

python - 检查 Case 查询集语句中是否存在相关对象?