Flask 缓存文件系统缓存是否跨进程共享?

SmC*_*lar 5 python caching flask uwsgi gunicorn

让我们假设我将 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()
Run Code Online (Sandbox Code Playgroud)

www.example.com/41只需要5秒一次,然后(3600秒)可立即无论uWSGI的或gunicorn工人?

SmC*_*lar 2

如果我在我的机器上本地运行它,缓存在不同的进程甚至整个服务器的不同重新启动中都是稳定的。