У меня есть служба 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, работающего внутри другого экземпляра службы?
Пожалуйста, сообщите.
Спасибо