Можно ли получить доступ к uWSGI cache2 удаленно, если uWSGI размещает cache2 вместе с другим приложением, таким как приложение на основе Flask? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть служба Flask RESTapi, работающая на uWSGI.

python 3.7 uWSGI == 2.0.17.1 Flask == 1.0.2

Служба использует кэш uWSGI2как local cache для хранения некоторых внутренних значений, сгенерированных во время выполнения на основе обработанных запросов.Таким образом, я могу установить / получить эти значения с помощью кода:

uwsgi.cache_set("key", "value", 0, "mycache")
uwsgi.cache_get("key", "mycache") 

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

val = uwsgi.cache_get("key", "mycache")
if not val:
    val = uwsgi.cache_get("key", "mycache@other_instance_host:3031")

Любая попытка чтения из удаленного cache2 возвращает None, и кеш кажется недоступным.

Вместо запуска второго экземпляра службы я попытался запустить uwsgi с автономным cache2т.е. без какого-либо размещенного приложения Flask, как показано ниже:

uwsgi --cache2 name=mycache,items=100 --socket :3031

В этом случае мой экземпляр службы может без проблем получить доступ к удаленному cache2:

uwsgi.cache_set("key", "myvalue", 0, "mycache@other_instance_host:3031")
uwsgi.cache_get("key", "mycache@other_instance_host:3031")

Я вижу, что uWSGI позволяетуказать только один порт через параметры конфигурации http или http-socket для flask app и cache2 - это может быть причиной проблемы?Я пытался исследовать это направление и надеялся найти решение в возможностях маршрутизации uWSGI, которое позволило бы разделить трафик между приложениями на флешках и кэшем 2, но мне не удалось найти ни одного решения или примеров.

Если описанный сценарий невозможен, есть ли способ достичь той же цели с помощью конфигурации uWSGI?Поддерживает ли uWSGI вид связанного режима cache2, чтобы кэш2 uWSGI одного экземпляра службы работал как расширение другого кеша uWSGI2, работающего внутри другого экземпляра службы?

Пожалуйста, сообщите.
Спасибо

...