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.