コードは次のようになります(私はflaskとflask-cacheを使用していますが、これは一般的な問題である可能性があります):
@cache.memoize(500000)
def big_foo(a,b):
return a + b + random.randrange(0, 1000)
Pythonインタープリターで実行すると、を呼び出すことで常に同じ結果を得ることができますbig_foo(1,2)
。
しかし、この関数をアプリケーションに追加しmod_wsgi
てデーモンに使用すると、ブラウザーで要求します。(はbig_foo
、その要求のビュー関数内で呼び出されます)。結果は毎回同じではないことがわかりました。
mod_wsgi
複数のプロセスを使用してアプリを起動するため、結果は毎回異なると思います。各プロセスには独自のキャッシュがある場合があり、プロセス間でキャッシュを共有することはできません。
私の推測は正しいですか?正しい場合、グローバルアクセス用に1つだけのキャッシュを割り当てるにはどうすればよいですか?そうでない場合、私のコードのどこが間違っていましたか?
以下は、に使用される構成ですflask-cache
UPLOADS_FOLDER = "/mnt/Storage/software/x/temp/"
class RadarConfig(object):
UPLOADS_FOLDER = UPLOADS_FOLDER
ALLOWED_EXTENSIONS = set(['bed'])
SECRET_KEY = "tiananmen"
DEBUG = True
CACHE_TYPE = 'simple'
CACHE_DEFAULT_TIMEOUT = 5000000
BASIS_PATH = "/mnt/Storage/software/x/NMF_RESULT//p_NMF_Nimfa_NMF_Run_30632__metasites_all"
COEF_PATH = "/mnt/Storage/software/x/NMF_RESULT/MCF7/p_NMF_Nimfa_NMF_Run_30632__metasample_all"
MASK_PATH = "/mnt/Storage/software/x/NMF_RESULT/dhsHG19.bed"