Python 如何使用NDB映射生成光标

Python 如何使用NDB映射生成光标,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,根据,映射功能支持所有查询选项关键字。但是,我无法使用map生成光标,并且还有更多的值。你是怎么做到的?如果我使用fetch生成结果,cursor和还有更多的我就不能再使用map,因为它不能在简单的列表上工作。你不能从map()中获取光标——获取光标的唯一方法是使用QueryIterator,或者调用fetch\u page()(在内部使用QueryIterator). 只有使用fetch_page()才能访问has_more标志 如果您有一个简单的列表,请使用Python的内置map()函数

根据,映射功能支持所有查询选项关键字。但是,我无法使用map生成
光标
,并且
还有更多的值。你是怎么做到的?如果我使用
fetch
生成
结果
cursor
还有更多的
我就不能再使用
map
,因为它不能在简单的列表上工作。

你不能从map()中获取光标——获取光标的唯一方法是使用QueryIterator,或者调用fetch\u page()(在内部使用QueryIterator). 只有使用fetch_page()才能访问has_more标志

如果您有一个简单的列表,请使用Python的内置map()函数:

map(<function>, <list-of-entries>)
map(,)

但也许你可以告诉我们更多关于你想做什么的信息?

谢谢你的回答。基本上,我正在加载一个包含20条评论的“页面”,对于每个评论,我希望加载一个包含5条子评论的“页面”(最好是并行)。我需要注释和子注释的游标,以便根据需要加载更多内容。我有一个可行的解决方案,使用串行方法,但我觉得这应该可以并行完成。@guido使用Python内置的map()函数是否可以像query.map()那样正确地处理Tasklet?@robert:map()正确地处理Tasklet意味着什么?它对微线程一无所知,所以如果将微线程映射到一个对象列表上,就会得到一个未来列表。我认为这是正确的。guido,我的措辞很糟糕我真正想问的是更微妙的问题。基本上,我试图询问并得到确认,使用内置映射会导致Tasklet以与使用query.map相同的“并发度”(rpc并行度)运行。在我的代码中,我将fetch_页面与内置映射结合使用,然后在futures上重新映射调用get_result()的列表。它似乎做了我想做的事。嗯。:-)在几乎所有情况下,“调用”异步方法根本不需要时间——它只是构建一个未来,并对稍后运行异步方法主体的调用进行排队。这是因为tasklet实现使用了一个生成器--“调用”一个生成器会立即返回,并且函数体在调用它的next()之前不会开始执行。(试试这个!)因此,对N个值的列表调用map()会立即为您提供N个未来的列表,并且作为副作用,会向事件循环添加N个回调。