2016-04-26 7 views
1

バックグラウンドスレッドで少し読んでいて、バックエンドインスタンスでのみ許可されているようです。期限切れのオブジェクトをすべて削除するために、期間クリーンアップジョブを呼び出すLRUインスタンスキャッシュを作成しました。これは、フロントエンドインスタンスとバックエンドインスタンスの両方で使用されます。自動スケーリングインスタンスのバックグラウンドスレッドと同等の方法を作成する方法

遅延やタスクキューを使用することを考えましたが、要求を同じインスタンスに戻すオプションがありません。何か案は?

答えて

0

タスクを開始するcronジョブを使用できます。このタスクでは、すべてのインスタンスを呼び出して期限切れのオブジェクトをクリーンアップすることができます。

+0

どのようにして何かを行うためにすべてのインスタンスでタスクコールがありますか?ドキュメントを見ると、どこで指定できるのかわかりません。 – user5831382

+0

各インスタンスを直接アドレス指定し、好きなハンドラを呼び出すことができます。 "/ delete_expired_objects" –

+0

それぞれのインスタンスを直接処理する方法については読んでいますが、ドキュメントでは自動スケーリングを使用している場合、インスタンスは匿名です。 https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine どちらの方法でも、モジュールapiでもプログラムですべてのインスタンスIDを取得できる関数はないようです。 – user5831382

0

にお任せください。 LRU cache behaviorに基づいてデータを期限切れにするか、またはデータに有効期限を設定することができます。

+0

これは確かに選択肢ですが、私はインスタンスのメモリに存在するキャッシュをもっと考えていました。 – user5831382

+0

@ user5831382:あなたは単に制限を使用できませんか?たとえば、最大1,000のオブジェクトを格納します。この制限にぶつかった場合は、期限切れになったもの、または最も古くなったものをすべて削除しますか? –

+0

私は現在、キャッシュをいっぱいにしてクリーンアップをしています。しかし、キャッシュが急速に満杯になった場合には、クリーンアッププロセスを私が望むよりも頻繁に始めることになります。 – user5831382

関連する問題