1

私はグーグルアプリエンジンで開発しています。この質問の焦点は、何百ものエンティティ グループを変更する Python 関数です。この関数は、1 つの文字列引数を取ります。この関数をトランザクションとして実行したいのは、現在、同じ文字列引数を持つ同じ関数が同時に実行され、予期しない結果になるインスタンスがあるためです。文字列引数が異なる場合は関数を並列に実行したいのですが、文字列引数が同じ場合はシリアルで実行する必要はありません。

非常に多くのエンティティ グループを変更する関数でトランザクションを実行する方法はありますか? これまでのところ、一意の文字列パラメーターごとにデータベース フラグを反転させ、フラグをチェックする (フラグが True に設定されている場合は実行を延期する) ことしか考えられません。よりエレガントなソリューションはありますか?

4

2 に答える 2

0

XG トランザクションは、パフォーマンス上の理由から少数のエンティティ グループに制限されています。何百ものエンティティ グループにわたって XG トランザクションを実行すると、信じられないほど遅くなります。

エンティティ グループごとに 1 つずつ、関数を多くのサブ関数に分割できますか? その場合、それらを個別に実行したり、タスク キューで問題なく実行したりできます。

于 2012-11-05T08:02:23.017 に答える
0

既にキューにあるタスクと同じ名前のタスクを挿入すると失敗するため、タスクキューを使用して、引数に基づいてタスクに名前を付けることで重複を防ぐことができます。詳細については、https ://developers.google.com/appengine/docs/python/taskqueue/overview#Task_Names をお読みください。

于 2012-11-05T04:07:49.217 に答える