2016-05-12 3 views
0

基本認証を実装しているApacheの背後にあるフラスコアプリがあります。ユーザー名とパスワードは、ブール関数check_authで外部サービスと照合されます。Flask関数の結果をプロセス間でキャッシュするか?

外部サービスの負荷を軽減するために正しい場合は、ユーザー名とパスワードをキャッシュします。

from werkzeug.contrib.cache import SimpleCache 

cache = SimpleCache() 

def check_auth(username, password): 
    if cache.get(username) == password or ext_service_check(username, password): 
     cache.set(username, password, 300) 
     return True 
    else: 
     return False 

しかしApacheは、常に複数のプロセスを開始し、これは私が同じ基本的な認証ヘッダを持つ2つの要求が来るならば、彼らは同じプロセスを打っていないので、キャッシュを利用していないの高いチャンスがあると思います。

このキャッシュはどのレベルにありますか?

SimpleCacheはここに何の利益ももたらさないでしょうか?

答えて

1

docsにはいくつかのキャッシュシステムがリストされています。 SimpleCacheは「単一プロセス環境用」であり、複数のプロセスにわたって機能しません。そのすぐ下には、他のキャッシュバックエンドのリストがあります。環境に適したものを使用してください。 MemcacheとRedisは組み込みの良い選択肢です。別のシステムが必要な場合は、独自のサブクラスを作成できます。

関連する問題