谷歌应用程序引擎-创建许多实体的应用程序引擎任务



我正在为参加活动的人构建一个应用程序。我需要为特定事件的Person实体的子集创建Ticket实体。人数可能超过50000个实体。

显然,我不能只做一个for循环,在那里我迭代一个Person查询并生成这些Tickets。

我如何在App Engine上构建它,有没有办法利用MapReduce?

您可能需要查看Deferred库。你可以在parallel中弹出一堆任务队列来完成你想要的工作。你可能想看看谷歌文档中的Mapper示例类,它可能会帮助你朝着正确的方向前进。

如果您是请求可以持续很长时间的后端,则可以在单个for循环中迭代。但在我看来,如此漫长的过程并不是一件好事。我想正确使用任务队列已经足够了。

我读过关于递延图书馆的文章。有时它的行为很奇怪,对数据进行酸洗可能会带来一些麻烦。我可以用于TaskQueue API

我不建议使用Deferred Library,尽管它很容易编写代码,但缺点是它会抓取数据,将其放入一个实体中,然后加载和卸载它,这会花费大量开销。Puts 3万个实体花费了我大约3个CPU小时!

最便宜的方法就是使用任务队列来拆分人员并使用密钥或其他位置信息进行排队。插入使用少于1 CPU小时的相同30K实体。

在你的问题中,获取100万个实体并运行是否非常快取决于GAE的设计,只需执行即可。最慢的部分是存储新的Ticket实体。

BTW,为什么不只是CCD_ 1

相关内容

  • 没有找到相关文章

最新更新