たとえば、
Firstインスタンスはカウント変数(初期値は0)を維持し、10個のリクエストを処理した後、カウントは10に増加します。その後、リクエストがなくなるため、AppEngineは最初のインスタンスをシャットダウンします。
その後、着信要求を処理するために2番目のインスタンスが作成されます。
私の質問は、カウント変数が10になるか、初期値(0)にリセットされるかどうかです。
リセットされた場合、それを回避する方法はありますか?(データストアを手動で使用する以外に)?
ありがとうございました
1 に答える
1
リクエストごとにインクリメントされるグローバル/モジュールレベルの変数について話していると思います。答えは、各インスタンスが独自のプロセスで実行されるため、後続のインスタンスはゼロから開始するだけでなく、複数のインスタンスを同時に実行できるため、各インスタンスには独自の独立したカウンターがあります。
これを行う適切な方法は、memcacheを使用してキーを保存することです。これは、すべてのインスタンスで単一の値になります。memcache.incr('counter')
値をアトミックにインクリメントするために行うことができます。
データを永続化することが重要な場合は、シャードカウンターの保存を検討できます。
于 2012-07-09T08:38:10.527 に答える