Flask-кэширование использует UWSGI-кеш с NGINX

UWSGI подключен к приложению фляги для UNIX-сокета:

NGINX (СЛУШАТЬ ПОРТ 80) <-> UWSGI (LISTER PER UNIX-SOCKER) <-> FLASK-APP

Я инициализировал кеш uwsgi для обработки глобальных данных. Я хочу обработать кеш с помощью пакета Python-кэширования.

Я пытаюсь инициализировать экземпляр 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. Приложение работает, ожидайте кеш.

1 ответ

Помните об использовании порождения нескольких процессов для NGINX. Каждый процесс обрабатывает свой собственный кеш. Без дополнительного слоя невозможно получить доступ к кешу из другого процесса nginx.


Этот ответ был опубликован как редактирование вопроса о том, что Flask-Caching использует кеш UWSGI с NGINX OP user9884812 под CC BY-SA 4.0.

Другие вопросы по тегам