假设我使用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 是否不受 uWSGI 或者 gunicorn workers 影响,在接下来的 3600 秒内都能立即访问?