让我们假设我将Flask与文件系统缓存结合使用uWSGI或gunicorn,它们中的任何一个启动多个进程或工作者。所有这些进程是否共享相同的缓存?或者换句话说,无论进程pid,线程状态等如何,函数和参数总是评估为相同的缓存键?
例如,请考虑以下最小示例:
import time
from flask import Flask, jsonify
from flask_caching import Cache
app = Flask(__name__)
cache = Cache(app, config={
'CACHE_TYPE': 'filesystem',
'CACHE_DIR': 'my_cache_directory',
'CACHE_DEFAULT_TIMEOUT': 3600,
})
@cache.memoize()
def compute(param):
time.sleep(5)
return param + 1
@app.route('/')
@app.route('/<int:param>')
def main(param=41):
expensive = compute(param)
return jsonify({"Hello expensive": expensive})
if __name__ == '__main__':
app.run()
www.example.com/41只需要5秒钟,然后(3600秒)可以立即使用,无论uWSGI或gunicorn工作人员如何?
如果我在我的机器上本地运行它,缓存在不同的进程中是稳定的,甚至是整个服务器的不同重启。