启动时使用Google App Engine在Google数据存储区中自动填充初始数据

时间:2019-05-11 13:36:36

标签: python google-app-engine google-cloud-platform google-cloud-datastore

我有一个Google App Engine Python应用程序。我正在使用Google数据存储作为数据库来存储动态内容。启动Google App Engine应用程序时,我想在Google数据存储区中自动填充一些数据。

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

  

dev_appserver.py app.yaml

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

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

1 个答案:

答案 0 :(得分:1)

要在开发环境中实现此目的,最简单的操作是在appengine_config.py文件中运行代码(如果没有这样的文件,请在应用程序的顶层创建它,与app.yaml在同一文件夹中。

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

from models import FooModel, BarModel

# 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)

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