问题标签 [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.

0 投票
2 回答
251 浏览

python - 使用投影查询时的 NDB 缓存

之前找不到这个特定的问题。App Engine 的 NDB 在使用投影查询与完整实体查询时如何处理缓存?

例如,如果我先进行投影查询..

...然后接下来进行常规查询...

...我会得到什么?完整的实体?如果是这样,NDB 是否自动缓存了第一个查询的任何部分?还是 NDB 能够很好地区分,所以下次我运行投影查询时,它可能会从缓存中提取?

0 投票
1 回答
738 浏览

python - StringListProperty vs StringProperty(重复=真)

它们之间的主要区别是什么?你也能谈谈结构化属性吗?它们都保存了多个值,但我无法理解其中的区别。

0 投票
1 回答
1436 浏览

app-engine-ndb - app engine ndb Key.get 只返回密钥?

给定我构建的密钥,我想访问数据存储以查看它是否存在,但我想要最便宜(及时)的方式来做到这一点。我正在寻找的是一个只有键的查询,但来自 get,例如 my_key.get(keys_only=True)。这样的动物存在吗?在我看来不像。如果没有,还有其他方法可以实现我的目标吗?

谢谢。

0 投票
2 回答
495 浏览

google-app-engine - 如何在一个查询中读取所有命名空间

不像,我如何在谷歌应用引擎上获取命名空间列表?,这个问题询问,无论是否知道所有命名空间名称,是否可以通过一个查询访问所有命名空间中的数据。


我阅读了有关命名空间的文档,它们非常适合隔离数据,但我想分析来自所有不同命名空间的一些数据。是否可以在我的应用程序中运行一个包含所有 1000 个命名空间的查询?一个独立于命名空间的查询?

0 投票
2 回答
4654 浏览

python - 获取 NDB 查询长度 - 在 Google App Engine 上使用 Python

在谷歌应用引擎上使用 NDB 时获取查询结果数量的好方法是什么?

尝试了这个:

很抱歉,这可能是一个非常简单的问题,但从文档中我并不清楚。

0 投票
2 回答
1104 浏览

google-app-engine - 在请求结束后,在带有 NDB 的 Appengine 上,当异步放置导致争用异常时会发生什么?

使用 ndb,假设我 put_async'd 40 个元素,使用@ndb.toplevel,向用户写入输出并结束请求,但是其中一个 put_async 导致争用异常,响应是 500 还是 200?或者让我们说如果它是一项任务,该任务会重新执行吗?

一种解决方案是在请求结束之前获取所有这 40 个请求并捕获这些异常(如果它们发生),但我不确定它是否会影响性能。

0 投票
1 回答
654 浏览

python - 将 PolyModel 与 NDB 相结合

我正在尝试将 polymodel 类与 NBD 类结合起来。鉴于以下问题,任何有助于澄清“最佳”方法的帮助都会很好。

我有一个水果的多模型(Fruit -> Tree-Bearing -> Apples -> Granny Smith- 作为多模型层次结构的示例),我想将它存储在一个名为 Diet 的 ndb.Model 中。所以很明显我有一个水果类别,一个蔬菜类别等。这应该如何构建?

到目前为止,我有:

这个问题 - 我认为我没有看错,饮食中的水果和蔬菜对象是“不可查询的”。我显然希望用户能够搜索与其特定水果相匹配的饮食。我还想利用 ndb 的缓存功能。我怎样才能有效地查询水果,这样如果我想要所有史密斯奶奶的饮食,我就可以得到它,而不会返回任何值为 none 的东西。另外,有没有可能用 NDB 做多边形模型?如果不是,我将如何将水果的结构更改为 A) 匹配我想要的并且 B) 至少在名义上有效?

非常感谢!乔恩

0 投票
1 回答
138 浏览

python - ndb 是否适用于在 GAE 上未使用 ndb 创建的实体?

切换到ndbpython GAE 上的库。

我可以ndb与之前使用低级 api 创建的实体一起使用吗?还是我必须复制所有旧实体并重新保存它们才能使用 ndb?

谢谢!

0 投票
1 回答
1847 浏览

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()吗?(为了安全起见,我应该把它放在每种方法之上吗?这样做有什么缺点?)

0 投票
1 回答
240 浏览

python - App Engine 中实体的最佳大小是多少

在这里寻找内幕消息。

我有一个大的 MD5 哈希列表,我想存储在数据存储中。该列表足够大,我必须使用多个实体来存储它。这意味着我必须将我的列表分解成更小的列表并单独存储它们。

为此,我有一个简单的模型,它可以存储和检索任意长的哈希列表:

假设我知道该列表有 1,000,000 个 MD5 哈希值。上面的代码将生成 10,000 个实体,每个实体的 zlist 属性的大小都小于 2k(基于我自己的简单测试)。

基本上,我想知道 MAX_LENGTH 的最佳值是多少。如果 MAX_LENGTH 变大,则实体大小会变大。我应该向每个实体推进 1MB(约 40,000 个 MD5 哈希)吗?100太小了吗?1000更好吗?