Есть ли в Python с wsgi (uwsgi) под nginx небольшой кеш по умолчанию? - PullRequest
0 голосов
/ 06 мая 2019

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

Материал работает в Python (Flask), работающем на nginx + uwsgi ( это образ докера).

Интересно, у меня есть небольшой кеш или общая память для хранения такой информации "из коробки", или мне нужно позаботиться о явной настройке какого-то выделенного кеша? Или, может быть, что-то подобное предоставлено nginx?

в качестве альтернативы я все еще могу использовать базу данных, поскольку она имеет свой собственный кэш, я думаю, в любом случае

Извините, если вопрос кажется наивным / глупым - поскольку я пришел из мира java (где все немного по-другому, поскольку мы обслуживаем все запросы с помощью одного толстого экземпляра java-приложения) - и испытываю некоторые трудности с пониманием того, какие полномочия выполняет wsgi / uwsgi предоставлять. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Вы просматривали раздел кэширования из документации Flask?

Буквально сказано:

Flask сама по себе не обеспечивает кеширование, но Werkzeug, одна из библиотек, на которой она основана, имеет некоторую базовую поддержку кеширования

Вы создаете объект кэша один раз и сохраняете его, подобно тому, как создаются объекты Flask. Если вы используете сервер разработки, вы можете создать объект SimpleCache, это простой кеш, который хранит элемент в памяти интерпретатора Python:

from werkzeug.contrib.cache import SimpleCache
cache = SimpleCache()

- ОБНОВЛЕНИЕ -

Или же вы можете решить на внешней стороне хранить данные в локальном хранилище веб-браузера.

Если в локальном хранилище нет ничего, что вы называете БД, иначе вы используете информацию из локального хранилища вместо того, чтобы делать вызов БД.

Надеюсь, это поможет.

0 голосов
/ 06 мая 2019

Во-первых, nginx имеет кеш:

https://www.nginx.com/blog/nginx-caching-guide/

Но для кэширования в колбе у вас также есть опции:

https://pythonhosted.org/Flask-Cache/

http://flask.pocoo.org/docs/1.0/patterns/caching/

...