问题标签 [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 投票
1 回答
1075 浏览

python - 访问 Appengine NDB 中已删除的实体

我在 Appengine 项目中使用 NDB。在删除某些实体后,我正在使用 _post_delete_hook 进行一些操作。在这种方法中,我有钥匙。但是当我做 key.get() 我得到一个错误。这是一些示例代码。

一些帮助?

这是关于钩子的文档。 http://code.google.com/appengine/docs/python/ndb/entities.html#hooks

0 投票
1 回答
165 浏览

python - 这个递归能写得更高效吗?

我有一个分层组织,它是一棵树,如果父母赞助孩子,节点就是孩子。看来我可以用这段代码遍历树

使用上面我可以得到一个用户的组织只是

downline=user.get_team(user, [])

但是有没有更有效的方法,因为我必须为单个请求多次执行此操作,并且很多递归可能效率低下?或者代码会很好,因为它可以正确地遍历树?在我的第一个版本中,我使用了三个变量,我发现我可以将代码重新排列为只有两个变量,而不是这样:

我发现 teamlist 变量并不是真正需要的,所以我删除了它。我这样做的方式是首先使用一个变量太多:

people = user.downline(user, [], [])

0 投票
1 回答
543 浏览

google-app-engine - 在 db.Model 和 NDB 之间创建 ManyToMany 引用

变化的问题。我想应用和之间的ManyToMany关系。例子db.ModelNDB

NDB模型

db模型

我可以应用ManyToMany这些模型之间的关系吗?

编辑:

这是我的User模型

这是我的Test db模型

现在我想在测试中应用 manyToMany。是否可以?

Django 风格的多对多

0 投票
2 回答
819 浏览

google-app-engine - 并行代码执行 python2.7 ndb

在我的应用程序中,对于一个处理程序,我需要获取一堆实体并为每个实体执行一个函数。

我有我需要的所有实体的钥匙。获取它们后,我需要为它们中的每一个执行 1 或 2 个实例方法,这会大大降低我的应用程序的速度。对 100 个实体执行此操作大约需要 10 秒,这很慢。

我试图找到一种方法来获取实体并并行执行这些功能以节省时间,但我不确定哪种方法最好。

我尝试了 _post_get_hook 但我有一个未来的对象,需要调用 get_result() 并执行钩子中的函数,该函数在 sdk 中工作正常,但得到很多“调用 Python 对象时超出最大递归深度”但是我真的不明白为什么,错误信息也不是很详细。

Pipeline api 或 ndb.Tasklets 我在寻找什么?

atm 我正在反复试验,但如果有人能引导我走向正确的方向,我会很高兴。

编辑

我的代码类似于文件系统,每个文件夹都包含其他文件夹和文件。集合的路径设置在另一个实体上,因此要序列化集合实体,我需要获取引用的实体并获取路径。在 Collection 上, serialized_assets() 函数包含的实体越多,它的速度就越慢。如果我可以并排为每个包含的资产执行序列化函数,它会加快速度。

编辑2:

这个tasklet代码可以吗?

0 投票
2 回答
790 浏览

google-app-engine - 使用 Google App Engine NDB 和 Fixture(s)

是否有关于如何将 Python夹具模块与 Google App Engines New DB一起使用的好信息?

似乎有一些问题,例如:

  1. obj.delete()拆解时(在ndb它的obj.key.delete()

  2. 如何设置嵌套的StructuredProperty元素并不直观。

是否有允许夹具模块使用的解决方法ndb,或者可以使用的替代夹具系统ndb

谢谢你。

0 投票
1 回答
1203 浏览

google-app-engine - modelname_set 的 Google App Engine ndb 等效项(反向引用属性)

是否有modelname_set(反向引用的属性)的等价物Google App Engine 的 NDB的等价物?

在旧数据库中,模型实体将反向引用属性描述为

后向引用属性的名称默认为 modelname_set(模型类的名称为小写字母,并在末尾添加“_set”),并且可以使用 ReferenceProperty 构造函数的 collection_name 参数进行调整。

我注意到 NDB 似乎不存在此属性db.Model我注意到 NDB实例

NDB 是否具有等效于反向引用的属性?

0 投票
1 回答
1126 浏览

google-app-engine - 如何模拟 ndb.get_context().urlfetch?

在我的测试中,我想模拟urlfetch由 NDB 包提供的,因此在测试执行期间不会发出真正的 http 请求。

urlfetch()return Future,所以看来我需要知道 NDB 内部才能正确模拟它......而且我认为我可以google.appengine.api.urlfetch.create_rpc()以某种方式模拟......但到目前为止我没有取得任何进展......

我怎样才能做到这一点?

谢谢你。

0 投票
2 回答
4708 浏览

google-app-engine - NDB 与 DB(在高复制数据存储上)的速度比较是多少?

取自Python NDB 概述

当应用程序读取一个实体时,该实体会被自动缓存;这为经常读取的实体提供了快速(且廉价)的读取。

...

写入数据的 NDB 函数(例如 put())在缓存失效后返回;Apply 阶段是异步发生的。

在 Youtube 上观看,Google I/O 2011: More 9s Please: Under the Covers of the High Replication Datastore,在 13:11-ish,平均延迟为:

主从:

  • 读取:15ms
  • 写入:20ms

高复制:

  • 读取:15ms
  • 写入:45 毫秒

从应用程序的角度来看,NDB 对这些速度的影响有多大?

编辑:特别好奇时间统计(以毫秒为单位)。

额外的信用:我还听说尼克约翰逊提到每个查询大约需要160 毫秒(在 2009 年)[link]NDB 是否为查询提供任何速度优势?

0 投票
1 回答
2580 浏览

python - 谷歌应用引擎 NDB

随着最近发布的NDB,是否有任何理由继续使用旧的数据存储 API?

我正在开发一个当前使用旧数据存储 API 的应用程序,并且我在 memcache 中缓存对象方面付出了相当多的努力。我的理解是否正确,通过更改为 NDB,我可以删除我的自定义缓存,并且仍然保留我当前的性能?

此外,NDB 是否以任何方式改变了对分片计数器的需求?NDB 中每秒向实体(组)写入 5 次的限制是否以某种方式发生了变化?

编辑

鉴于我的应用程序仍在开发中,并且我没有无法轻松删除的实体,在更改为 NDB 之前是否应该考虑一些事情,或者是否像更改为一样db.Model简单ndb.Model

0 投票
2 回答
1283 浏览

python - Google-app-engine NDB iter keys_only

假设我有一个经常执行的查询,很可能产生相同的结果。

使用是否正确:

会表现得比:

因为在第一个示例中,查询将仅加载键,后续调用key.get()将利用 NDB 的缓存机制,而示例 2 将始终从存储中获取实体?还是我误解了什么?