私のデータストアでは、PlayerStatistic
という名前の数百のエンティティをGamePlayRecord
という名前に変更しました。デベロッパー・サーバーでは、Interactive Consoleに小さなスクリプトを書くことでこれを簡単に実行できました。ただし、アプリケーションがデプロイされると、Interactive Consoleはありません。Google App Engineデータストアのリファクタリング
代わりに、そのスクリプトをファイルにコピーし、ファイルをapp.yaml
にリンクしました。私はスクリプトを展開し、一度実行してから削除するつもりです。しかし、別の問題が発生しました。つまり、スクリプトは30秒以上実行されています。スクリプトは完了する前に常に切り捨てられます。
私の解決策は、エンティティを1つずつ作成して削除するようにスクリプトを書き直すことになりました。こうすることで、タイムアウトしたときでも、スクリプトは中断したところから続けることができます。私は数百のエンティティしか持っていないので、これは約5回のリフレッシュを必要としました。
Google App Engineでワンタイムリファクタリングスクリプトを実行するより良い方法はありますか?これらのリファクタリングスクリプトを実行するために30秒の制限を回避する良い方法はありますか?
これは、deferredを使用してバックグラウンドで作業することに関するGoogle App Engineの記事につながった:http://code.google.com/appengine/articles/deferred.html – Kai