Я хочу знать, может ли приложение фляги, работающее на uwsgi с несколькими процессами + потоками, иметь доступ к общей структуре данных памяти, определенной в классе приложения Flask.
Что я пытаюсь сделать:
У меня есть приложение фляги, которое будет работать на nginx + uwsgi. Я хочу, чтобы каждый http-запрос имел доступ к некоторым данным, которые лежат в базе данных etcd. Тем не менее, это медленно. Чтобы ускорить ответы http, я думаю о загрузке данных из БД в память приложения колбы при запуске приложения колбы. Поэтому при каждом запросе эти данные могут быть быстро доступны из локальной памяти вместо запроса etcd.
Как я пытаюсь это сделать:
Я определил свой собственный класс Flaskapp и унаследовал его от «Flask» и переопределил « init » для загрузки состояния предварительного запуска:
class FlaskApp(Flask):
def __init__(self, *args, **kwargs):
self.populate_info() # This function will load stuff
super(FlaskApp, self).__init__(*args, **kwargs)
def populate_info(self):
self.stuff = []
#load stuff from db to self.stuff
Будет ли каждый запрос на флягу читать self.stuff? Исходя из C ++ фона, насколько я понимаю, это зависит от того, как uwsgi запускает приложение фляги. Поэтому мне нужен ответ: 1) Каждый ли процесс uwsgi создает приложение Flask? 2) Или uwsgi создает экземпляр экземпляра приложения Flask один раз в памяти, разделяет его между всеми процессами, а затем каждый процесс вызывает только обработчики запросов http этого экземпляра для каждого запроса? Я попытался найти документацию, чтобы понять, как uwsgi планирует это, но не смог найти достаточно информации, чтобы понять это. Так что оценю любую помощь. Если это совместное использование памяти не будет работать (что я догадываюсь), каков альтернативный способ сделать это? Благодаря.