Переменные приложения Flask приводят к пустой структуре данных в Google App Engine - PullRequest
0 голосов
/ 20 сентября 2018

Я развернул приложение Flask на движке приложений Google, открывая различные конечные точки для внешнего мира.Есть несколько глобальных переменных, включая список.После нескольких часов добавления информации в глобальную переменную она сбрасывается в пустую переменную, и по запросу через конечную точку ответ равен нулю.Пожалуйста, помогите мне с этим вопросом.Спасибо

1 Ответ

0 голосов
/ 20 сентября 2018

Точное поведение может варьироваться в зависимости от вашего выбора масштабирования, но в основном сервис App Engine может порождать новые экземпляры, если это необходимо для обслуживания большего количества запросов, или может закрывать экземпляры, когда они больше не нужны.

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

В целом, вам следует избегать глобальных переменных в распределенных системах.Я бы рекомендовал использовать постоянное хранилище, например Datastore , для хранения вашего списка, поэтому все экземпляры App Engine будут запрашивать это хранилище, чтобы получить актуальный общий список.Если задержка имеет решающее значение для вашего приложения, вы можете кэшировать значение в Memcache также для более быстрого поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...