0

我有一个 Google App Engine Python 应用程序。我使用谷歌数据存储作为数据库来服务器动态内容。我想在启动谷歌应用引擎应用程序时自动填充谷歌数据存储中的一些数据。

启动我正在使用的应用程序

dev_appserver.py app.yaml

我有一个 python 脚本来自动填充初始数据,但不知道如何配置该脚本以在启动应用程序时运行一次。

此外,我使用带有 jinja2 模板的 webapp2 构建了网站。

4

1 回答 1

2

要使其在开发环境中工作,最简单的做法是在您的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)

了解这种方法在云中无法可靠地工作。这是因为在云中可能有多个应用程序实例一直在启动和停止。最好设计您的应用程序,以便在实例启动时(甚至在每次部署后)不需要重新初始化数据存储。

于 2019-05-11T14:44:19.157 回答