Google App Engine при запуске автозаполняет начальные данные в хранилище данных Google - PullRequest
0 голосов
/ 11 мая 2019

У меня есть приложение Google App Engine Python. Я использую хранилище данных Google в качестве базы данных для сервера динамического содержимого. Я хочу автоматически заполнить некоторые данные в хранилище данных Google при запуске приложения Google App Engine.

Для запуска приложения я использую

dev_appserver.py app.yaml

У меня есть скрипт Python для автозаполнения начальных данных, но я не знал, как настроить этот скрипт для запуска один раз при запуске приложения.

Более того, я создал сайт, используя webapp2 с шаблонизацией jinja2.

1 Ответ

2 голосов
/ 11 мая 2019

Чтобы это работало в среде разработчика, проще всего выполнить код в файле appengine_config.py (если у вас нет такого файла, создайте его на верхнем уровне своего приложения, в та же папка, что и app.yaml).

# Make this the last item in app.yaml - set up vendoring etc first.

from models import FooModel

# Delete existing records
keys = FooModel.query().fetch(keys_only=True)
ndb.delete_multi(keys)

data = get_data_from_somewhere()

# Assumes data is an iterable of dicts
entities = [FooModel(**item) for item in data]
ndb.put_multi(entities)

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

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