在我的数据存储区中,我有几百种类型的PlayerStatistic
实体,我想重命名为GamePlayRecord
。 在开发服务器上,通过在交互式控制台中编写一个小脚本很容易实现。 但是,部署应用程序后,没有交互式控制台。
相反,我将该脚本复制到一个文件中并在app.yaml
链接该文件。 我部署了脚本,打算运行一次,然后删除它。 但是,我遇到了另一个问题,即脚本运行超过30秒。 脚本在完成之前总会被切断。
我的解决方案最终重写了脚本,以便一次创建和删除一个实体。 这样,即使超时,脚本也可以从中断的地方继续。 由于我只有几百个实体,所以这需要大约5次更新。
有没有更好的方法在Google App Engine上运行一次性重构脚本? 是否有一种很好的方法可以绕过30秒的限制来运行这些重构脚本?
使用任务队列。
任务可以比Web请求运行更长时间。 您还可以将工作拆分为多个任务,这样它们就可以并行运行并且完成得更快。 完成任务后,您可以以编程方式插入新任务,因此整个过程自动完成,您无需手动刷新。
appengine-mapreduce是进行数据存储重构的好方法。 它可以处理手工编写任务代码时需要解决的大量杂乱细节。