问题标签 [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 回答
656 浏览

google-app-engine - 如何在 Jinja2 模板中循环子实体时显示父实体

如何在 jinja 2 模板中使用此解决方案https://stackoverflow.com/a/10067749/604240 ?

0 投票
1 回答
462 浏览

google-app-engine - 当查询结果数量很大时使用 qry.map_async() 是否安全?

我有一个 AppEngine cron 作业来查询数据存储,然后需要对查询返回的每个实体做一些工作。查询返回的实体数量有时会很大(>1000)。

我的目标是最大限度地提高并发性并保持较低的内存使用率 - 由于预期的结果数量很大,它们可能不适合内存。

鉴于大量的结果,我是否应该像这样迭代它们:

...或者使用更快的 map_async() 对任意大的结果集进行操作是否安全?

我已经阅读了所有文档,甚至查看了实现的核心内容,但并不完全清楚这些操作对于大型结果集的限制是什么。

0 投票
3 回答
4779 浏览

google-app-engine - 使用 ndb 获取、修改和放置一批实体的最有效方法

在我的应用程序中,我执行了一些批处理操作。不幸的是,这有时需要永远更新 400-500 个实体。我拥有的是所有实体键,我需要获取它们,更新属性并将它们保存到数据存储区,保存它们可能需要 40-50 秒,这不是我想要的。

生病简化我的模型来解释我的工作(无论如何这很简单):

获取和修改不会花费太长时间。我试图 get_async 进入一个 tasklet 以及其他任何可能的方法,只有在 get 或 forloop 需要更长的时间时才会改变。

但真正困扰我的是,一个put最多需要50秒......

在相当长的时间内完成此操作的最有效方法是什么。当然,我知道这取决于许多因素,例如实体的复杂性,但是放置所需的时间确实超出了我可以接受的限制。
我已经尝试过异步操作,tasklet ......

0 投票
1 回答
313 浏览

google-app-engine - NDB 在 key.get() 的掩护下做了什么?

我开始使用 NDB,因为它提供了一些非常好的功能,并且通常应该比我通过自己的缓存层实现时更优化。

但是,我不了解 key.get() 等简单操作的所有情况。Appstats 显示,在这样的操作过程中,在刚刚启动的开发服务器上,进行了 4 次 RPC:

为什么我们有 2 个 memcache.Get 操作?为什么 memcache.Set 出现在 datastore_v3.Get 之前?我使用默认的缓存选项。查看 ndb.context.get 可以提供一些见解,但我仍然感到困惑。memcache.Set 是关于 LOCK 的。但是两个 Get 调用看起来相同,为什么在数据存储 Get 之后没有 Set?

0 投票
1 回答
6788 浏览

google-app-engine - NDB 中 Entity.all(keys_only=True).fetch(20) 的等价物是什么?

如何在 NDB 中获得以下查询的等效结果?

我知道你可以传递'keys_only=True'iter()方法。但是如果我只想执行一个键获取,我该如何在 NDB 中执行呢?

0 投票
2 回答
1036 浏览

json - 谷歌应用引擎、ndb 和 Json

我有一个属性存储为 JSON 对象,如下所示:

当我这样做时,我得到这个错误:

在 ndb 模型类中。

作为一个ndb.TextProperty它工作正常。也许我发送的 JSON 错误,这是我发送的 JSON 对象:

0 投票
1 回答
3702 浏览

google-app-engine - 为 App Engine NDB 模型指定 key_name 的最佳方法是什么?

我正在尝试创建一个 ndb 模型,其中每条记录都有一个唯一的字段“名称”。我想将此字段定义为 key_name 字段并使用它来查找记录。我是否必须包含一个名称字段,或者我可以以某种方式将 key_name 字段设置为用户可以指定的任意字符串,只要它是唯一的?

我正在考虑使用 Model.get_or_insert 来确保旧记录不会被覆盖,但是有没有办法判断返回值是新创建的还是预先存在的?如果用户输入了重复的名称,我希望能够显示错误消息。

最后,我尝试在使用上述 ndb 模型作为元类的 DjangoForms 模型上创建一个 key_name 字段,因此我可以使用 djangoforms 进行验证/渲染,但由于某种原因,我定义的字段没有显示。

类 UserProfileForm(djangoforms.ModelForm): key_name = djangoforms.StringProperty() 类 Meta: 模型 = UserProfile

0 投票
2 回答
2146 浏览

google-app-engine - 带有光标的向后分页正在工作但缺少一个项目

寻找想法/替代方案到提供与 GAE 数据存储查询匹配的项目的页面/项目计数/导航,我可以找到提示如何通过 REVERSING ORDER 使用单个光标向后页面导航。

不幸的是,它因此错误而失败。

回溯(最近一次通话最后):文件“/Users/reiot/Documents/Works/appengine-ndb-experiment/ndb/query_test.py”,第 32 行,在 testFirst self.assertEqual(len(bars), len(baz) ) AssertionError: 3 != 2

是的,反向查询缺少边界中的项目。

我该如何解决这个问题?

0 投票
1 回答
1360 浏览

google-app-engine - KeyProperty 对象没有属性 get

我将 a_post_put_hook放入我的 NDB 模型类型之一,这样每当放置该类型的实体时,它都会使 memcache 键无效。该键由设置键的 urlsafe 版本组成。但是,当这段代码运行时,它会这样说:

这是相关的模型类:

想法?

0 投票
2 回答
885 浏览

python - 无法使用 NDB get_by_id 获取命名空间中的实体

我想在当前命名空间之外阅读如下内容:

但 get_by_id 不将命名空间作为参数。我得到:

我有一些事情要做:

所以现在我只是在抱怨,但我认为其他人可以从中受益。:) 此外,由于 Guido 监控这一点,是否有理由不允许 get_by_id 中的命名空间选项?

编辑: 这现在可以在 App Engine 1.7.0 中实现。