UWSGI 通过 UNIX-Socket 连接到烧瓶应用程序:
NGINX (监听 80 端口) <-> UWSGI (LISTER PER UNIX-SOCKER) <-> FLASK-APP
我已经初始化了一个 uwsgi 缓存来处理全局数据。我想用 python 包烧瓶缓存来处理缓存。
我正在尝试使用正确的缓存地址初始化缓存实例。似乎有什么不对劲。我认为,app.run() 的参数与 uwsgi 无关。
如果我正在设置一个缓存条目,它总是返回无:
app.route("/")
def test():
cache.set("test", "OK", timeout=0)
a = cache.get("test")
return a
主文件
from flask import Flask
from flask_caching import Cache
app = Flask(__name__)
# Check Configuring Flask-Caching section for more details
cache = Cache(app, config={'CACHE_TYPE': 'uwsgi', 'CACHE_UWSGI_NAME':'mycache@localhost'})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
uwsgi.ini
[uwsgi]
module = main
callable = app
cache2 = name=mycache,items=100
nginx.conf
server {
listen 80;
location / {
try_files $uri @app;
}
location @app {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi.sock;
}
location /static {
alias /app/testapp/static;
}
}
我正在使用来自https://github.com/tiangolo/uwsgi-nginx-flask-docker的 docker 构建。该应用程序正在运行,期待缓存。
编辑
经过很长时间,我找到了解决方案:
请注意使用为 NGINX 生成多个进程。每个进程都处理自己的缓存。如果没有附加层,则无法从不同的 nginx 进程访问缓存