2011-06-24 182 views
2

在我的数据存储中,我有几百个实体PlayerStatistic,我想将其重命名为GamePlayRecord。在开发服务器上,通过在交互式控制台中编写一个小脚本很容易。但是一旦应用程序被部署,就没有交互式控制台。重构Google App Engine数据存储

取而代之,我将该脚本复制到一个文件中并链接到app.yaml中的文件。我部署了脚本,打算运行一次,然后删除它。但是,我遇到了另一个问题,那就是脚本运行了30多秒。脚本在完成之前总是会被切断。

我的解决方案最终重写了脚本,以便它一次创建并删除一个实体。这样,即使超时,脚本仍然可以继续停留。由于我只有几百个实体,所以大约需要刷新5次。

有没有更好的方法在Google App Engine上运行一次性重构脚本?为了运行这些重构脚本,是否有一个很好的方法来避开30秒的限制?

回答

5

使用任务队列。

任务的运行时间可能比网络请求的时间要长得多。您也可以将工作分解为许多任务,以便它们平行运行并更快完成。当您完成任务时,您可以通过编程插入新任务,这样整个过程就会自动完成,您无需手动刷新。

+0

这引发了我的Google App Engine关于使用延迟进行后台工作的文章:http://code.google.com/appengine/articles/deferred.html – Kai

3

appengine-mapreduce是进行数据存储重构的好方法。它需要处理很多凌乱的细节,您在手工编写任务代码时必须要面对这些细节。

相关问题