Flask-Caching如何使用UWSGI缓存与NGINX?

7
UWSGI通过UNIX-Socket连接到flask应用程序:
NGINX(监听端口80)<-> UWSGI(侦听器per UNIX-SOCKER)<-> FLASK-APP
我已经初始化了uwsgi缓存以处理全局数据。我想使用python包flask-caching处理缓存。
我正在尝试使用正确的缓存地址初始化Cache实例。似乎有些问题。我认为app.run()的参数对于uwsgi不相关。
如果我设置了一个缓存条目,它总是返回None:
app.route("/")
def test():
    cache.set("test", "OK", timeout=0)
    a = cache.get("test")
    return a

main.py

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 构建。应用程序正在运行,但缓存无法正常工作。

2
经过长时间的研究,我找到了解决方案:注意不要为NGINX生成多个进程。每个进程都处理自己的缓存。如果没有额外的层,就无法从不同的nginx进程访问缓存。 - Ewro
有什么解决方案吗? - Yasar Arafath
你已经修好了吗? - Paulo
1个回答

0

注意在NGINX中生成多个进程的使用。每个进程都处理自己的缓存。如果没有额外的层,就无法从不同的nginx进程访问缓存。


这个答案是由 OP ewro 在 CC BY-SA 4.0 下发布的,作为问题 Flask-Caching use UWSGI cache with NGINX编辑


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接