代码是这样的(我正在使用烧瓶和烧瓶缓存,但这可能是一个普遍的问题):
@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
使用多个进程来启动应用程序。每个进程可能都有自己的缓存,并且缓存不能在进程之间共享。
我的猜测对吗?如果正确,我如何分配一个且只有一个缓存用于全局访问?如果不是,我的代码哪里出了问题?
以下是用于的配置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"