问题标签 [app-engine-ndb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用投影查询时的 NDB 缓存
之前找不到这个特定的问题。App Engine 的 NDB 在使用投影查询与完整实体查询时如何处理缓存?
例如,如果我先进行投影查询..
...然后接下来进行常规查询...
...我会得到什么?完整的实体?如果是这样,NDB 是否自动缓存了第一个查询的任何部分?还是 NDB 能够很好地区分,所以下次我运行投影查询时,它可能会从缓存中提取?
python - StringListProperty vs StringProperty(重复=真)
它们之间的主要区别是什么?你也能谈谈结构化属性吗?它们都保存了多个值,但我无法理解其中的区别。
app-engine-ndb - app engine ndb Key.get 只返回密钥?
给定我构建的密钥,我想访问数据存储以查看它是否存在,但我想要最便宜(及时)的方式来做到这一点。我正在寻找的是一个只有键的查询,但来自 get,例如 my_key.get(keys_only=True)。这样的动物存在吗?在我看来不像。如果没有,还有其他方法可以实现我的目标吗?
谢谢。
google-app-engine - 如何在一个查询中读取所有命名空间
不像,我如何在谷歌应用引擎上获取命名空间列表?,这个问题询问,无论是否知道所有命名空间名称,是否可以通过一个查询访问所有命名空间中的数据。
我阅读了有关命名空间的文档,它们非常适合隔离数据,但我想分析来自所有不同命名空间的一些数据。是否可以在我的应用程序中运行一个包含所有 1000 个命名空间的查询?一个独立于命名空间的查询?
google-app-engine - 在请求结束后,在带有 NDB 的 Appengine 上,当异步放置导致争用异常时会发生什么?
使用 ndb,假设我 put_async'd 40 个元素,使用@ndb.toplevel,向用户写入输出并结束请求,但是其中一个 put_async 导致争用异常,响应是 500 还是 200?或者让我们说如果它是一项任务,该任务会重新执行吗?
一种解决方案是在请求结束之前获取所有这 40 个请求并捕获这些异常(如果它们发生),但我不确定它是否会影响性能。
python - 将 PolyModel 与 NDB 相结合
我正在尝试将 polymodel 类与 NBD 类结合起来。鉴于以下问题,任何有助于澄清“最佳”方法的帮助都会很好。
我有一个水果的多模型(Fruit -> Tree-Bearing -> Apples -> Granny Smith
- 作为多模型层次结构的示例),我想将它存储在一个名为 Diet 的 ndb.Model 中。所以很明显我有一个水果类别,一个蔬菜类别等。这应该如何构建?
到目前为止,我有:
这个问题 - 我认为我没有看错,饮食中的水果和蔬菜对象是“不可查询的”。我显然希望用户能够搜索与其特定水果相匹配的饮食。我还想利用 ndb 的缓存功能。我怎样才能有效地查询水果,这样如果我想要所有史密斯奶奶的饮食,我就可以得到它,而不会返回任何值为 none 的东西。另外,有没有可能用 NDB 做多边形模型?如果不是,我将如何将水果的结构更改为 A) 匹配我想要的并且 B) 至少在名义上有效?
非常感谢!乔恩
python - ndb 是否适用于在 GAE 上未使用 ndb 创建的实体?
切换到ndb
python GAE 上的库。
我可以ndb
与之前使用低级 api 创建的实体一起使用吗?还是我必须复制所有旧实体并重新保存它们才能使用 ndb?
谢谢!
python - 在 Google App Engine 中使用 @ndb.tasklet 或 @ndb.synctasklet
我有一个POST
调用几个小任务的方法。这些 tasklet 中确实有 yield,x.put_async()
我的代码中确实有一些。所以我不希望它在所有异步内容完成之前返回。所以我装饰了我所有的小任务,它们只是用@ndb.tasklet
. 此外,除了我的POST
方法之外,我还有:
但是,在文档中它指出:
但是如果一个处理方法使用了yield,那么该方法仍然需要包装在另一个装饰器中,@ndb.synctasklet;否则,它将在 yield 处停止执行并且不会完成。
确实,我的方法有效果。它已经包含在@ndb.tasklet 中。我是用@ndb.synctasklet 替换它还是同时使用两者(如果是这样,我将如何同时使用两者)?
另外,请参阅此线程,它具有一定的相关性。我也注意到一个问题,即我的请求将返回而没有任何输出,但无法重现。它每 15 分钟左右持续使用一次。我app = ndb.toplevel(webapp2.WSGIApplication([..])
只有,但现在我已经添加@ndb.toplevel
到主要POST
方法中,但问题仍然存在。
我应该把@ndb.tasklet
刚刚的方法放在上面put_async()
吗?(为了安全起见,我应该把它放在每种方法之上吗?这样做有什么缺点?)
python - App Engine 中实体的最佳大小是多少
在这里寻找内幕消息。
我有一个大的 MD5 哈希列表,我想存储在数据存储中。该列表足够大,我必须使用多个实体来存储它。这意味着我必须将我的列表分解成更小的列表并单独存储它们。
为此,我有一个简单的模型,它可以存储和检索任意长的哈希列表:
假设我知道该列表有 1,000,000 个 MD5 哈希值。上面的代码将生成 10,000 个实体,每个实体的 zlist 属性的大小都小于 2k(基于我自己的简单测试)。
基本上,我想知道 MAX_LENGTH 的最佳值是多少。如果 MAX_LENGTH 变大,则实体大小会变大。我应该向每个实体推进 1MB(约 40,000 个 MD5 哈希)吗?100太小了吗?1000更好吗?