【发布时间】:2019-02-24 11:33:36
【问题描述】:
假设我将 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 工作者如何?
【问题讨论】:
标签: python caching flask gunicorn uwsgi